正则表达式逗号或括号之间的字符串,但不包含点



我的目标是有一个正则表达式,它捕获以下内容:

  • 在'('和'之间的任何字符串,不包括
  • 在','和','之间的任何字符串,不包括
  • 在','和')'之间的任何字符串,不包括
  • 创建的子字符串不包含任何点

F。e:

  • "(xxxx"=比;有效的
  • "(xxxx) =比;有效的
  • "(xxx。多,"=比;无效的

对于不包括边界的子字符串,我有这个正则表达式:

(?<=[(,])(.*?)(?=[),])

工作正常

现在我想扩展它来拒绝任何包含点的字符串,像这样:

(?<=[(,])((?!.).*?)(?=[),])

但它不会过滤掉带有点的字符串,因此这仍然有效:

(xxxx.yyyy)的

如何调整正则表达式?

谢谢。

您可以将此正则表达式与一个否定的字符类一起使用:

(?<=[(,])([^.]*?)(?=[),])

[^.]将匹配任何非点的字符。

还需要注意的是,在字符类(即[...]

)中不需要转义(, ). ,等字符。

使用

(?<=[(,])[^(),.]*(?=[),])

看到证据。

NODEEXPLANATION
(?<=查看后面是否有
[(,]的任何字符 : '(', ','
)结束后面找了
[^(),.]*以外的任何字符 : '(', ')', ',', '.
(?=往前看是否有:
[),]的任何字符 : ')', ','
)年底先行的

相关内容

最新更新