我正在 Perl 中开发一个正则表达式,它标识了我想要的内容:词尾 g(但不跟在“n”之后)或 k(但不跟在“r”之后)位于词首 g 之前(但不是 l 或 r)、词首 k 或词首 c(但不是 i、e、y 或 h 之前的 c):
(((?<!n)g)|(?<!r)k)\s(g(?!l|r)|k|c(?!i|e|y|h));
但是,我希望它捕获末尾有 g 或 k 的单词,所以我尝试了这样的操作:
(^|\s.*(((?<!n)g)|(?<!r)k))\s(g(?!l|r)|k|c(?!i|e|y|h));
这样$1
捕获行的开头或空格(表示单词的开头),直到 g、k 或 c 之前的下一个空格(单词的结尾)。也许这是一个括号问题,但我不确定如何保留我所拥有的分组,同时还指定我想要的位置 $1
捕捉。
最佳答案
怎么样/(\S*(((?<!n)g)|(?<!r)k))\s(g(?!l|r)|k|c(?!i|e|y|h))/
?
编辑:看看它,它可能需要一些清理:D
/(\S*([^n]g|[^r]k))\s(g[^lr]|k|c[^ieyh])/
关于regex - 从正则表达式匹配中捕获单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35248582/