Java 正则表达式查找特殊字符之间的子字符串
我在Java中遇到了这个问题 我有数据字符串,其中包含括在Java 正则表达式查找特殊字符之间的子字符串,java,regex,Java,Regex,我在Java中遇到了这个问题 我有数据字符串,其中包含括在&和之间的实体例如 &Text.ABC;, &Links.InsertSomething; 这些实体可以是ini文件中的任何内容 我需要在输入字符串中找到这些字符串并删除它们。这些实体在输入字符串中可以没有、一次或多次出现 我正在尝试使用正则表达式进行模式匹配并失败 有人能为这个问题推荐正则表达式吗 谢谢 下面是正则表达式: "&[A-Za-z]+(\\.[A-Za-z]+)*;" 它首先匹配字符&,然后是一
&
和之间的实体代码>例如
&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
以下是正则表达式:
"&[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正则表达式库
还有一个很好的在线正则表达式测试仪,它使用java正则表达式库
您可以尝试:
input=input.replaceAll("&[^.]+\\.[^;]+;(,\\s*&[^.]+\\.[^;]+;)*","");
您可以尝试:
input=input.replaceAll("&[^.]+\\.[^;]+;(,\\s*&[^.]+\\.[^;]+;)*","");