我在Java中遇到了这个问题。
我的数据字符串包含&
和;
之间的实体。例如
&Text.ABC;, &Links.InsertSomething;
这些实体可以是我们所拥有的ini文件中的任何内容。
我需要在输入字符串中找到这些字符串并将其删除。输入字符串中可能没有,一次或多次出现这些实体。
我正在尝试使用正则表达式进行模式匹配和失败。
有人可以为这个问题建议正则表达式吗?
谢谢!
答案 0 :(得分: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]+)*;", "");
如果要在匹配的标记后删除空格,可以使用此re:
"&[A-Za-z]+(\\.[A-Za-z]+)*;\\s*" // the "\\s*" matches any number of whitespace
答案 1 :(得分:1)
还有一个很好的在线正则表达式测试程序,它使用java正则表达式库。
答案 2 :(得分:0)