如何获得&的完全匹配在给定的字符串中

时间:2016-10-20 10:04:32

标签: java regex

示例:"True && False & True"

在上面的字符串中,如果只有&存在且没有查找连续字符(&),我会尝试匹配。

我的意思是&&不应该匹配,但如果字符串中有&,它应该只匹配(?=&{1})

在上述情况下,我应该只获得1场比赛。

我正在寻找正则表达式。

尝试选项:

&

我相信通过使用字符串的长度并找到第一次出现"12 711 112 011 111 61 070 401 2216 515 4 14 516 3".delete("\s") 并计算相同的结果将会得到结果。

但仍在以正则表达式的形式寻找更好的答案。

2 个答案:

答案 0 :(得分:3)

你可以使用负向前瞻和后视:

(?<!&)&(?!&)

这意味着“其他&

之前或之后没有& public static void main(String[] args) { String s = "True && False & True but & is & right?"; Pattern p = Pattern.compile("(?<!&)&(?!&)"); Matcher m = p.matcher(s); while (m.find()) { // can keep counter and add +1 here System.out.println(m.group()); } }

示例Java代码:

&
&
&

O / P:

1
4 4
1 2 24
1 4 20
3 1 3
4 3 12
1

答案 1 :(得分:0)

使用正则表达式时,您可以利用我们所说的:正面和负面前瞻或外观。 这意味着当你在一个字符串中搜索一个字符并且你不希望它后面跟着你使用Negative Lookahead时,肯定是相反的。如果您不希望该角色遵循您使用Lookbehind的内容。 在功能上你看起来'&amp;'并没有'&amp;'而且不遵循'&amp;'。

使用以下表达式编译正则表达式模式:

(?<!&)&(?!&)