Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/371.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 正则表达式查找特殊字符之间的子字符串_Java_Regex - Fatal编程技术网

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

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

我在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
以下是正则表达式:

"&[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*&[^.]+\\.[^;]+;)*","");