Python 找一个更好的正则表达式来标记法语单词中的省略
我有一句话:Python 找一个更好的正则表达式来标记法语单词中的省略,python,regex,Python,Regex,我有一句话: sentence1 = "Vincennes Confirmation des privilèges de la villed'Aire au bailliage d'Amiens Mai 1498 Aire-sur-la-Lys, Pas-de-Calais, arrondissement de Saint-Omer." 下面的脚本返回开始偏移量、结束偏移量和单词: 重新导入 对于re.finditer中的元素(r“[\w'-]+|[,!?;]”,第1句)
sentence1 = "Vincennes Confirmation des privilèges de la villed'Aire au bailliage d'Amiens Mai 1498 Aire-sur-la-Lys, Pas-de-Calais, arrondissement de Saint-Omer."
下面的脚本返回开始偏移量、结束偏移量和单词:
重新导入
对于re.finditer中的元素(r“[\w'-]+|[,!?;]”,第1句):
start=element.start()
end=element.end()
value=语句1[开始:结束]
打印(开始、结束、值)
我得到以下输出:
0 9 Vincennes
10 22 Confirmation
23 26 des
27 37 privilèges
38 40 de
41 43 la
44 55 villed'Aire
56 58 au
59 68 bailliage
69 77 d'Amiens
78 81 Mai
82 86 1498
87 102 Aire-sur-la-Lys
102 103 ,
104 117 Pas-de-Calais
117 118 ,
119 133 arrondissement
134 136 de
137 147 Saint-Omer
...
我的输出是我想要的,但我正在寻找比[\w'-]+|[,!?;]
更好的正则表达式来标记带撇号的单词,例如:
d'Amiens => ["d'", "Amiens"]
d'Abrimcourt =>> ["d'", "Abrimcourt"]
...
but not :
villed'Aire => ["villed'Aire"]
...
有人有主意吗?谢谢。您可以使用
\b[dlnmtsj]'|\w+(?:['-]\w+*|[,!?;]
\b[dlnmtsj]'|\w+(?:['-]\w+*|[^\w\s]
看
详情:
-一个单词的开头,然后是\b[dlnmtsj]
(例如d
),d'argent
(例如l
),l'huile
(例如n
),n'en
(例如m
),m'appelle
(例如t
t'appelle>,
s>(例如,
)后跟j'ai
“
-或|
-一个或多个单词字符后跟\w+(?:['-]\w+*
或'
,然后是一个或多个单词字符-
-或|
-[,!?;]
,,
,
,!
或?
。替换为;
,以匹配除单词和空格字符以外的任何字符[^\w\s]
字符视为一个特殊的断字字符,你应该使用\b[dlnmtsj]'.[^\W.+(?:['-][^\W.]+*.[^\W\s].