我正在研究perl中的正则表达式,它标识了我想要它的内容:单词final g(但不是跟随'n')或k(但不跟随'r')在word-initial g之前(但不是l或r),单词初始k或单词初始c(但不是c,在i,e,y或h之前):
(((?<!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
捕获的位置。
答案 0 :(得分:2)
/(\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])/