gpt4 book ai didi

java - 正则表达式仅匹配内部模式?

转载 作者:太空宇宙 更新时间:2023-11-04 15:05:49 26 4
gpt4 key购买 nike

嘿,我有以下字符串:

# The [[state]] that follows [[birth]], and precedes [[death]]; the state of
[[be]]ing [[alive]] and [[live|living]].#

现在我希望找到的是[[live|living]],我尝试过以下表达式:

\[\[(.*?)\|(.*?)\]\]

问题是它匹配了[[state]][[,正确位置的|和结尾]]

如何设置仅获取最内部 [[ ]] 模式的模式?也许排除 (.*?) 右方括号?如果是这样,该怎么办?

注意:我使用的是 java,因此 \ 实际上是两次,但用一个 \ 进行了简化

最佳答案

The problem is it matches the [[ of [[state]], the | of the right place and the end of the ]]

这是因为你让你的表情消耗了一切,只要它不是竖条。

如果您更改表达式以避免第一组中的右括号,它应该捕获您想要的文本:

\[\[([^\]|]*?)\|([^]]*?)\]\]

此更改的另一个积极方面是它将消除 backtracking来自正则表达式的评估过程,这可以显着提高性能。

Demo on ideone.

关于java - 正则表达式仅匹配内部模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22011164/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com