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

Regex 如何获取最后两个匹配字符之间的字符串,regex,Regex,我有一串aaaaao.zzzzzzzz.OaaaaO.gggggggg.Oaaaaaaaa 如何通过正则表达式获取O.和.O最后两个单词之间的字符串 我想要的是GGGGGG 谢谢您可以在O.和.O之间进行匹配,并使用负前瞻性断言在行尾之前没有其他操作系统: O\.(\w+)\.O(?!.*O\.) 解释 或者*[O] [.]?.[.][O]* 为您提供一个命名的捕获组。 括号中的位是命名组“getthis” 你反复寻找任何角色, 然后是一个O,后跟一个点, 然后是您想要的捕获组。 然后是一个点

我有一串aaaaao.zzzzzzzz.OaaaaO.gggggggg.Oaaaaaaaa

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

我想要的是GGGGGG


谢谢

您可以在O.和.O之间进行匹配,并使用负前瞻性断言在行尾之前没有其他操作系统:

O\.(\w+)\.O(?!.*O\.)
解释 或者*[O] [.]?.[.][O]*

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

你反复寻找任何角色, 然后是一个O,后跟一个点, 然后是您想要的捕获组。 然后是一个点,后面跟着一个O。 然后任何字符在它之后任意次数。
您可以使用这些在双括号中查找值的简单模式。 我使用escape来确保点符号不算作任何字符,而是字面意义上的

(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

希望有帮助

我可能错了,但好吧,所以你会想要与[oO][^\w].[^\w][oO]或[oO][^\w][\w]+[^\w][oO]或类似的东西;我还没试过那些模式。然后从结果数组中获取最后一个匹配项。您使用的是哪种编程语言?有人满意地回答了您的问题吗?如果他们回答了,通常会接受。不匹配后面跟a的O,而是跟任意字符的O。你完全正确。我在所有的圆点符号前放了一个逃避符号。谢谢您可以删除?:。?!O+$支持*O\.一个更简单的。*O\..*\.O.*和用$1代替也可以。是的,这也行$1表示捕获组1,而不是命名它-可能是特定于语言的。
(O\.)(hello)(\.O)
aaaaaaaO.zzzzzzzz.Oaaaa((O.hello.O))aaaaaaaa