繁体   English   中英

正则表达式以查找特殊字符之间的子字符串

[英]regex to find substring between special characters

我在Java中遇到了这个问题。

我的数据字符串包含&;之间的实体; 例如

&Text.ABC;, &Links.InsertSomething; 

这些实体可以是我们拥有的ini文件中的任何内容。

我需要在输入字符串中找到这些字符串并将其删除。 在输入字符串中可能没有这些实体,也可能没有一个或多个。

我正在尝试使用正则表达式来进行模式匹配和失败。

谁能建议这个问题的正则表达式?

谢谢!

这是正则表达式:

"&[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

还有一个不错的在线正则表达式测试器,它使用java regexp库。

http://www.regexplanet.com/simple/index.html

你可以试试:

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

看见

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM