如何使RegEx拒绝所有包含引号之间的句点的字符串,除非该句号前面有数字符号?
[^.]*
会拒绝任何有句号的内容,但我该怎么做呢?
答案 0 :(得分:0)
这应该这样做:
^(?!.*?"[^"]*(?<!\d)\.[^"]*").+
Here's a demo;注意单元测试(左下角链接)。
我们的想法是匹配任何字符串(^
和最终.+
),但如果匹配.*?"[^"]*(?<!\d)\.[^"]*"
则拒绝它:任何字符,"
,任何字符 - "
个字符,.
前面没有数字,任何非"
字符和另一个"
。
示例:
Foo matches
foo "bar" matches
"foo" bar matches
Foo "bar." does not match
Foo "Bar. Baz" does not match
"Foo" bar "Baz." does not match
Foo "bar 3." matches
Foo "3." matches
答案 1 :(得分:0)
您可以使用此正则表达式:
".*#\..*"|"[^.]*?"
它同时捕获"abc"
和"a#.bc"
但拒绝"a.bc"
首先,它会尝试匹配包含数字符号后跟句点的引号之间的字符串。然后,如果它不匹配,它将匹配不包含句点
的引号之间的最短字符串干杯