0

我正在尝试构建一个正则表达式来查找字符串中是否有逗号,而不是斜杠逗号。例如 - 这里有一个匹配项:aaa,aaa 这里没有一个匹配项:aaa\,aaa

你能想出解决办法吗?

4

3 回答 3

2

这应该工作:[^\\],. 它应该匹配任何不是 a\后跟 a 的字符,。(我使用 Regex Pal 的Regex Tester对此进行了测试)。在您的情况下,根据您使用的语言,您可能只需要使用这个:[^\],.

但是,此模式假定它,不是字符串中的第一个字母。如果您还想应对这种可能性,您应该考虑使用这个:(^,)|([^\\],). 这将检查 the,是字符串的第一个字母还是前面没有 a \

编辑:问题似乎是对于这样的情况:aaa,aaa,我建议的正则表达式需要一个字符(之前的那个,)。我在 Java 代码中尝试了以下行:String[] grp = "aaa,aaa".split("(?<!\\\\),");它对我有用(如上面其他答案中所建议的那样)。如果您提供有关您使用的语言的信息,您可能有更大的机会获得帮助。

于 2012-07-12T13:16:01.470 回答
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 
于 2012-07-12T13:20:38.037 回答
1

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):

/(^|[^\\]),/
于 2012-07-12T13:16:49.750 回答