假设我有这段文字:
abcdefg Mark Jones (PP) etc etc
akslaskAS Taylor Daniel Lautner (PMB) blabla
etcetc Allan Stewart Konigsberg Farrow (PRTW)
我想捕捉这些个人姓名:
Mark Jones, Taylor Daniel Lautner, Allan Stewart Konigsberg Farrow.
基本上,当我们发现(p后跟任何大写字母时,我们捕获前面以大写字母开头的n个单词
到目前为止,我所取得的成就是用这段代码只捕获了前面的一个单词:\w+(?=\s+(\(P+[A-Z]))
,但我无法从中发展。
如果有人能帮忙,我将不胜感激:)
正则表达式模式
为了找到上述正则表达式模式的所有匹配项,我们可以使用^{}
正则表达式详细信息
\b
:防止部分匹配的单词边界((?:[A-Z]\w+\s?)+)
:第一个捕获组(?:[A-Z]\w+\s?)+
:非捕获组匹配一次或多次[A-Z]
:匹配大写字母{\w+
:匹配任意单词字符一次或多次\s?
:将任何空白字符匹配零次或一次\s
:匹配单个空白字符\(
:按字面意思匹配字符(
P
:按字面意思匹配字符P
[A-Z]
:匹配大写字母{见在线^{}
有了你们展示的样品,你们能试一下下面的吗。在这里使用Python的
re
库获取结果。首先,使用findall
从给定的字符串var中获取所有值,其中(.*?)\s+\((?=P[A-Z])
将捕获后面有P和大写字母的所有内容,然后创建一个列表lst。后来,使用替换函数将所有非间隔的内容替换为空,然后将第一次出现的空格替换为空,以获得准确的值输出如下:
相关问题 更多 >
编程相关推荐