我一直在开发单个正则表达式以从以下两个字符串中的任何一个提取路径:
1. "life:living:fast"
2. "life"
3. ":life"
4. ":life:"
我有这些正则表达式可以使用:
(.{3,}):", ":(.{3,}):", ":(.{3,})", "(.{3,})
第一场比赛就是我所需要的。即,每个字符串的期望结果应该是位于单词life所在位置的字符串。认为生活是变数
但是出于某种原因,将这些正则表达式组合在一起是一件痛苦的事情:如果我依次执行它们,我会提取“生命”一词。但是,我无法将它们合并为一个。
感谢您的努力。
如果要life
使用冒号,可以使用以下命令:
^:?(?:.{3,}?)(?::|$)
如果您希望第一个life
没有冒号的用户,请切换到此:
((?<=^:)|^)([^:]{3,}?)(?=:|$)
运作方式#1: ^:?(?:.{3,}?)(?::|$)
^:?
字符串的开头使用,我们匹配一个可选的冒号(?:.{3,}?)
懒惰地匹配三个或更多字符,直到...(?::|$)
冒号或字符串的结尾运作方式#1: ((?<=^:)|^)([^:]{3,}?)(?=:|$)
((?<=^:)|^)
确保我们要么位于字符串的开头,要么位于字符串开头之后的冒号之后([^:]{3,}?)
懒惰地匹配不是冒号的字符...(?=:|$)
可以断言其后是冒号或字符串的末尾。本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句