我正在尝试构建一个正则表达式来查找字符串中是否有逗号,而不是斜杠逗号。例如 - 这里有一个匹配项:aaa,aaa 这里没有一个匹配项:aaa\,aaa
你能想出解决办法吗?
这应该工作:[^\\],
. 它应该匹配任何不是 a\
后跟 a 的字符,
。(我使用 Regex Pal 的Regex Tester对此进行了测试)。在您的情况下,根据您使用的语言,您可能只需要使用这个:[^\],
.
但是,此模式假定它,
不是字符串中的第一个字母。如果您还想应对这种可能性,您应该考虑使用这个:(^,)|([^\\],)
. 这将检查 the,
是字符串的第一个字母还是前面没有 a \
。
编辑:问题似乎是对于这样的情况:aaa,aaa
,我建议的正则表达式需要一个字符(之前的那个,
)。我在 Java 代码中尝试了以下行:String[] grp = "aaa,aaa".split("(?<!\\\\),");
它对我有用(如上面其他答案中所建议的那样)。如果您提供有关您使用的语言的信息,您可能有更大的机会获得帮助。
试试这个:
.*(?<!\\),.*
通常有四种不同的断言类型:
(?=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
You can use negative lookbehind to match only the comma:
/(?<!\\),/
If your regex engine does not support that, you'd use a negated character class, which also matches the character before the comma (or the string start):
/(^|[^\\]),/