我做了一个快速的谷歌搜索,但找不到任何结果。 *和?包括零长度匹配。如何从结果中排除它们?
例如运行? on“ada”在1和3处返回零长度匹配。如何排除它们?
答案 0 :(得分:1)
这是一个非常通用的问题,我宁愿逐案解决;但是一个始终有效的选项(只要你有前瞻可用 - 你没有指定正则表达式方言)就是在{regexp}之前添加(?=.)
。 /(?=.)a?/
在功能上等同于/a/
; /(?=.)a*/
在功能上等同于/a+/
和/aa*/
。
因此,你问题中的例子没有意义 - 你永远不会写/(?=.)a?/
,因为/a/
在语法和概念上都更简单。因此,这基本上是一个XY问题 - 最好问一下你的真实用例,因为/a?/
和/a*/
是一个没有实际意义的问题。