如何在最后两个匹配字符之间获取字符串

时间:2019-08-15 11:38:43

标签: regex

我有一个aaaaaaaO.zzzzzzzz.OaaaaO.gggggggg.Oaaaaaaaa的字符串

我如何通过正则表达式获取O..O的最后两个单词之间的字符串

我想要的是gggggggg

谢谢

3 个答案:

答案 0 :(得分:1)

您可以匹配O..O之间的内容,并使用负前瞻断言在行尾之前不再有O了:

O\.(\w+)\.O(?!.*O\.)

Demo

说明

O\.(\w+)\.O(?!.*O\.)
O\.                         # match "O."
   (\w+)                    # match and capture word characters
        \.O                 # match ".O"
           (?!     )        # negative lookahead:
              .*O\.         # There is no "O." anymore

答案 1 :(得分:0)

this.*[O][.](?<getthis>.*)[.][O].*

为您提供一个命名的捕获组。 括号()中的位是名为“ getthis”的组。

  • 您反复寻找任何字符,
  • 然后是一个O,后跟一个点
  • 然后选择所需的捕获组。
  • 然后是一个圆点,后跟一个O。
  • 然后将任意字符多次。

答案 2 :(得分:0)

您可以使用这些简单的模式在((双括号))中查找值。 我使用转义确保点号不算作任何字符,而是按字面意思。

(O\.)[a-z]+(\.O)

aaaaaaa((O.zzzzzzzz.O))aaaa((O.gggggggg.O))aaaaaaaa

或者您可以在方括号内指定要搜索的字符。加号(+)确保可以找到至少一个或更多字符。

(O\.)[g]+(\.O)
aaaaaaaO.zzzzzzzz.Oaaaa((O.gggggggg.))Oaaaaaaaa

如果您需要一个特定的单词,请尝试以下操作:

(O\.)(hello)(\.O)
aaaaaaaO.zzzzzzzz.Oaaaa((O.hello.O))aaaaaaaa

希望有帮助!