我正在尝试构建一个正则表达式,用于查找字符串中是否有逗号,但不是斜杠逗号。例如 - 这里有匹配: aaa,aaa 这里没有匹配项: aaa \,aaa
你能想到一个解决方案吗?
答案 0 :(得分:2)
这应该有效:[^\\],
。它应匹配任何不是\
后跟,
的字符。 (我使用Regex Pal的Regex Tester进行了测试)。在您的情况下,根据您使用的语言,您可能只需要使用它:[^\],
。
但是,此模式假定,
不是字符串中的第一个字母。如果您还想要应对这种可能性,您应该考虑使用它:(^,)|([^\\],)
。这将检查,
是字符串的第一个字母,还是前面没有\
。
编辑:问题似乎是对于这样的情况:aaa,aaa
,我建议的正则表达式采用其中一个字符(,
之前的那个字符)。我在Java代码中尝试了以下行:String[] grp = "aaa,aaa".split("(?<!\\\\),");
它对我有用(如上面其他答案中所提出的)。如果您提供有关您使用的语言的信息,则可能有更大的机会获得帮助。
答案 1 :(得分:1)
您可以使用negative lookbehind仅匹配逗号:
/(?<!\\),/
如果你的正则表达式引擎不支持,你可以使用negated character class,它也匹配逗号之前的字符(或字符串start):
/(^|[^\\]),/
答案 2 :(得分:1)
试试这个:
.*(?<!\\),.*
一般来说,这种类型有四种不同的断言:
(?=pattern)
is a positive look-ahead assertion
(?!pattern)
is a negative look-ahead assertion
(?<=pattern)
is a positive look-behind assertion
(?<!pattern)
is a negative look-behind assertion