regex - 从正则表达式匹配中捕获单词

标签 regex perl

我正在 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/

相关文章:

c# - 替换以 “A” 开头,包含一个或多个 "B"并以 C 结尾的单词

java - Java中的通配符匹配

perl - 为什么 shift 认为它在标量上下文中接收参数?

perl - 如何使用 Perl 将冒号放入距末尾两个字符的字符串中?

perl - 我可以在通过分割有条件地插入散列时避免字符串复制吗?

java - 使用正则表达式 java 检索嵌入的 youtube 视频 ID

java - java中使用正则表达式解析字符串

python - 从字符串中提取键和值

perl - perl 中的十六进制转储解析

perl - 我怎样才能通过 prove (Test::More) 一个论点,例如API 网址?