我正在try 让RegEx匹配对话中某个特定角色所说的所有单词.每一行都被格式化为"[name]:[Dialog]",所以在每一行的开头都有一个一致的标记来判断,但我不知道如何做到这一点.例如,如果我在看《罗密欧与朱丽叶》中的罗密欧对话,它会匹配《罗密欧:我爱你朱丽叶》中的每个词,但不会匹配《朱丽叶:我爱你罗密欧》中的任何一个词.
我认为唯一可能的解决方案是使用Lookback断言,我有(?<=NAME:[.*])\w+
个,但这不会返回任何匹配.通过一些调试和查看其他答案,我发现问题出在添加[.*]
,特别是方括号.这就把我带到了(?<=^NAME:).*\w+
,它几乎起作用了,但它匹配了整行对话,而不是单个单词.
在写这篇文章的时候看了一下复习题,我发现了this question,它的代码是\Aframe.*width\s(?<width>\d+)\sheight\s(?<height>\d+)\z
.我try 将其修改为\ANAME:.*\w+\s(?<\w+>\d+)\s\z
,然后又修改为\ANAME:.*\w+\s(?\w+\d+)\s\z
,但两个都返回了关于第二个\w+
的错误,理由是"糟糕的转义".然后我查看了this question,它的代码是(^@property|(?!^)\G)(.*? )\K([^-\n]\w+)
,但即使是没有任何修改的基本代码也返回了相同的"错误转义"错误.