2024-09-30 01:36:08 发布
网友
我是RegEx的新手,我想用正则表达式在点之间找到单词。你知道吗
例如,文本类似于:
abc.efg.hij.klm.opq.
我试过下面的正则表达式:
\.(\w+)\.
它只显示2个匹配项:
.efg. .klm.
为什么我会得到这个结果?你知道吗
下面是到RegEx的链接:https://regex101.com/r/pqMN8t/1/
它只显示两个匹配项,因为regex引擎将不匹配它已经匹配的项。匹配.efg.之后,它将不匹配hij之前的点,因为该点已经匹配(在efg之后的点)。你知道吗
.efg.
hij
efg
解决这个问题的一种方法是不匹配点,而是使用lookaheads和lookbehinds:
(?<=\.)\w+(?=\.)
这样,点就不会匹配了。你知道吗
它只显示两个匹配项,因为regex引擎将不匹配它已经匹配的项。匹配
.efg.
之后,它将不匹配hij
之前的点,因为该点已经匹配(在efg
之后的点)。你知道吗解决这个问题的一种方法是不匹配点,而是使用lookaheads和lookbehinds:
这样,点就不会匹配了。你知道吗
相关问题 更多 >
编程相关推荐