2

文字列のリストがあります(この場合はTwitterからのツイート)。これらの文字列はユーザ​​ーによって投稿され、他の特定のユーザーを参照することもあります。JavaのString.replaceAll(pattern、replace)メソッドとともに正規表現を使用して、一般的な問題のインスタンスを音声(この場合は繰り返し子音)に置き換えていますが、ユーザー名で見つかったパターンを無視する方法が必要です。ユーザー名のパターンは、正規表現と普遍的に一致します\b@\S+\b

だから私は一致したいのですが、一致y+するもののメンバーとしてではありません\b@\S+\b

だからeverybodyy @everybodyy everybodyy私は一致しますever(y)bod(yy) @everybodyy ever(y)bod(yy)

これは可能ですか、どうすればよいですか?

4

2 に答える 2

2

text.replaceAll("(?i)(?<!\\B@\\S{1,20})y+", "y");動作します。Javaの現在のバージョンは、ルックビフォアの最大長サイズよりも明示的に小さい限り、可変長ルックビフォアをサポートします。

Twitterユーザー名の最大長は固定されているため、可変長ルックビフォアの最大長が固定されているため、問題が解決します。

于 2013-03-08T17:16:43.213 に答える
0

次のことを試してください。

String regEx = "(\\s+[^@\\s]\\S*y+\\S*)|(^[^@\\s]\\S*y+\\S*)";
于 2013-03-08T17:37:23.937 に答える