2011-01-24 34 views
0

我在Java中遇到這個問題。正則表達式來查找特殊字符之間的子串

我有數據字符串包含在&;之間的實體。

&Text.ABC;, &Links.InsertSomething; 

這些實體可以是我們擁有的任何ini文件。

我需要在輸入字符串中找到這些字符串並將其刪除。在輸入字符串中可以不存在一個或多個這些實體。

我想用正則表達式來模式匹配和失敗。

任何人都可以提出這個問題的正則表達式?

謝謝!

回答

3

這裏是正則表達式:

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

它首先由字符&,隨後一個或多個字母(大寫和小寫字母)([A-Za-z]+)匹配。然後它匹配一個點後跟一個或多個字母(\\.[A-Za-z]+)。可以有任何數量的這個,包括零。最後,它匹配;字符。

你可以使用這個表達式在java中是這樣的:如果你想匹配的令牌後刪除空格

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]+)*;", ""); 

,您可以使用此重:

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

非常感謝!這非常有效。 – SfromMA 2011-01-24 20:38:59

0

你可以試試:

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

See it

相關問題