2011-01-24 30 views
0

Javaでこの問題が発生しています。特殊文字間の部分文字列を検索する正規表現

&;の間に囲まれたエンティティを含むデータ文字列があります。

&Text.ABC;, &Links.InsertSomething; 

これらのエンティティは、私たちが持っているiniファイルから何でもかまいません。

これらの文字列を入力文字列で見つけて削除する必要があります。入力文字列にこれらのエンティティが1つも存在しなくてもかまいません。

正規表現を使用してパターンの一致と失敗を試みています。

誰でもこの問題の正規表現を提案できますか?

ありがとうございます!

"&[A-Za-z]+(\\.[A-Za-z]+)*;" 

これは、1つ以上の文字(大文字と小文字の両方)([A-Za-z]+)が続く文字&を照合することによって開始する:ここ

答えて

3

が正規表現です。次に、1つ以上の文字(\\.[A-Za-z]+)が続くドットにマッチします。これにはゼロを含めていくつでもかまいません。最後に、;文字に一致します。

:あなたはマッチしたトークンの後に空白を削除したい場合は、この再使用することができます

Pattern p = Pattern.compile("&[A-Za-z]+(\\.[A-Za-z]+)*;"); // java.util.regex.Pattern 
String subject = "foo &Bar; baz\n"; 
String result = p.matcher(subject).replaceAll(""); 

それとも

"foo &Bar; baz\n".replaceAll("&[A-Za-z]+(\\.[A-Za-z]+)*;", ""); 

あなたはこのようなJavaでこの正規表現を使用することができます

"&[A-Za-z]+(\\.[A-Za-z]+)*;\\s*" // the "\\s*" matches any number of whitespace 
+0

おかげでたくさん!それは素晴らしく働いた。 – SfromMA

0

あなたは試すことができます:

input=input.replaceAll("&[^.]+\\.[^;]+;(,\\s*&[^.]+\\.[^;]+;)*",""); 

See it

関連する問題