找到正确的正则表达式时遇到问题。
有了这个正则表达式,
([\.!?] |^|\n)(M\. \b.*?)\b[.,].*(?!(M\. )).*?([mM]adame l[ea] ministre)
我有一个语料库,其名称采用以下样式
“ M. X. blablabla(M。X说什么)M. Y. blablabla(M。Y.说什么)”
我在谈话中不得不出现[mM] adame l [ae] ministre(女性或男性)。
因此,以M. Y为例,“ Je suis madame la ministre”我想听:
“ M. Y. Je suis女士夫人部长”
但是我的正则表达式捕获到“ M. X. blablabla M. Y. Je suis madame la ministre”
也,
在M. X中,X可以是:
“姓LongSurname-with-spécial-char”
要么
“冗长的标题”
对于前:
https://regex101.com/r/XRCUwc/1
应该抓住:
M.莫里斯·勒罗伊(M. Maurice Leroy)。不可否认,想像不到! (对社会主义团体的哀叹)。《人民报》,法国部长夫人
请帮助我,我是regex的新手,它们可以很抽象...
最佳答案
Examaple@Regex101
我想我知道您想要什么,即找到Mr.
的最后一次出现,直到下一个madame le ministre
图案
re.findall("M\.(?!.*M\.)(.*)[mM]adame l[ea] ministre", text)
匹配字符«
M\.
»负相纸烟)«
(?!.*M\.)
»匹配不是换行符«
(.*)
»的任何单个字符匹配字符«
[mM]adame l[ea] ministre
»我希望这就是您的意思,也许下次尝试在您的第一次尝试中变得更加清楚。问得好的问题更值得花时间;)