我的目标是有一个正则表达式,它捕获以下内容:
- 在'('和'之间的任何字符串,不包括
- 在','和','之间的任何字符串,不包括
- 在','和')'之间的任何字符串,不包括
- 创建的子字符串不包含任何点
F。e:
- "(xxxx"=比;有效的
- "(xxxx) =比;有效的
- "(xxx。多,"=比;无效的
对于不包括边界的子字符串,我有这个正则表达式:
(?<=[(,])(.*?)(?=[),])
工作正常
现在我想扩展它来拒绝任何包含点的字符串,像这样:
(?<=[(,])((?!.).*?)(?=[),])
但它不会过滤掉带有点的字符串,因此这仍然有效:
(xxxx.yyyy)的
如何调整正则表达式?
谢谢。
您可以将此正则表达式与一个否定的字符类一起使用:
(?<=[(,])([^.]*?)(?=[),])
[^.]
将匹配任何非点的字符。
还需要注意的是,在字符类(即[...]
(, ). ,
等字符。使用
(?<=[(,])[^(),.]*(?=[),])
看到证据。
NODE | EXPLANATION |
---|---|
(?<= | 查看后面是否有 |
[(,] | 的任何字符 : '(', ',' |
) | 结束后面找了 |
[^(),.]* | 以外的任何字符 : '(', ')', ',', '. |
(?= | 往前看是否有: |
[),] | 的任何字符 : ')', ',' |
) | 年底先行的 |