次のパターンを使用して 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
}