我正在尝试使用正则表达式解析字符串。我需要在 clean 之前获得第一部分&
。清洁&
没有+
权利在它之前或之后。
干净的 &:
- 47&78
- a+bc&gsd+f
不干净 &:
- fA+&71
- 午睡&+系统
对于Matisse+&+Sadko&sendtemp=1
正则表达式应该返回Matisse+&+Sadko
.
我试过这样做,但它不起作用:
.*(?!\+)&(?!\+).*
谢谢。
我正在尝试使用正则表达式解析字符串。我需要在 clean 之前获得第一部分&
。清洁&
没有+
权利在它之前或之后。
干净的 &:
不干净 &:
对于Matisse+&+Sadko&sendtemp=1
正则表达式应该返回Matisse+&+Sadko
.
我试过这样做,但它不起作用:
.*(?!\+)&(?!\+).*
谢谢。
这(?!...)
是一个(否定的)前瞻表达式,它检查下一个字符是否(不)匹配。因此,您需要将那个字符添加到您的正则表达式中,因为 the&
永远不是+
:
(?!\+).&(?!\+)
但这需要在 . 之前至少有一个字符&
。更好地使用(负面)回顾:
(?<!\+)&(?!\+)
阅读更多关于Regex Lookaround的内容。
如果您&
从不在字符串的开头或结尾,您也可以只使用否定字符类:
.*[^+]&[^+].*
...或者,如果可以的话,让它成为可选的:
^(?:.*[^+])?&(?:[^+].*)?$
所以,很好,你看看负面的前瞻,但它的任务更多(!)简单。
[somesymbols]
- 这是一组符号,正则表达式接受。
[^somesymbols]
- 这是一组符号,正则表达式不接受。
所以,只要写这个:[^+]&[^+]
过滤你的字符串