1

次のパターンを使用して c# regex のような単純な Unicode 文字列زسسまたはیسیتنانت一致しますが、Java では一致しません。

誰でもこれを説明できますか?Javaで動作するように修正するにはどうすればよいですか?

 "\\b[\\w\\p{M}\\u200B\\u200C\\u00AC\\u001F\\u200D\\u200E\\u200F]+\\b"

c#コード:(文字列に一致します)

   private static readonly Regex s_regexEngine;


    private static readonly string s_wordPattern = @"\b[\w\p{M}\u200B\u200C\u00AC\u001F\u200D\u200E\u200F]+\b";

    static PersianWordTokenizer()
    {
        s_regexEngine = new Regex(s_wordPattern, RegexOptions.Multiline);
    }

    public static List<string> Tokenize(string text, bool removeSeparators, bool standardized)
    {
        List<string> tokens = new List<string>();

        int strIndex = 0;
        foreach (Match match in s_regexEngine.Matches(text))
        {
            //Enter in this block
        }

Java コード:(文字列と一致しません)

 private static final String s_wordPattern = "\\b[\\w\\p{M}\\u200B\\u200C\\u00AC\\u001F\\u200D\\u200E\\u200F]+\\b";

static
{
    s_regexpattern = Pattern.compile(Pattern.quote(s_wordPattern));
}

public static java.util.ArrayList<String> Tokenize(String text, boolean removeSeparators, boolean standardized)
{
    java.util.ArrayList<String> tokens = new java.util.ArrayList<String>();

    int strIndex = 0;
    s_regexEngine=s_regexpattern.matcher(text);
    while(s_regexEngine.find())
    {
              // it dosnt enter in this block
            }
4

3 に答える 3

0

正規表現自体は .NET と Java で変わりませんので、Java での使用方法を大まかに示します。

package regexdemo;
import java.util.regex.*;

public class void main(String[] args) {
    String term = "Hello-World";
    boolean found = false;
    Pattern p = Pattern.compile("\\b[\\w\\p{M}\\u200B\\u200C\\u00AC\\u001F\\u200D\\u200E\\u200F]+\\b");
    Matcher m = p.matcher(term);
    if (matcher.find()){
        found = true;
    }
}

また、正規表現のさまざまなフレーバーを判別するための出発点として、サイトを見ることをお勧めします

http://docs.oracle.com/javase/tutorial/essential/regex/index.html
http://www.regular-expressions.info/

于 2013-01-11T14:23:28.663 に答える
-4

java.util.regex.Pattern.quote への呼び出しで正規表現文字列をラップします。例: java.util.regex.Pattern.quote(yourCSharpRegexString)。

于 2013-01-11T16:29:37.360 に答える