如何在Python中编写regexp,使其在前辅音之后匹配元音?[bdfhjnptvxz](?=[aeiouy])

2024-09-28 16:57:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我被regexp卡住了:

[b-df-hj-np-tv-xz](?=[aeiouy])

结果是: hielalao
但是我需要regexp,它的结果是:hIelalao


Tags: dfnptvregexpxzhjaeiouyhielalao
2条回答

正如jornsharpe所建议的那样(?<=[^aeiouy])[aeiouy]是错误的,因为它与例如。 在空格数字后的元音

要完成任务,请使用:

(?<=[b-df-hj-np-tv-xz])[aeiouy]

可能带有re.I(忽略大小写)标志

第一部分((?<=[b-df-hj-np-tv-xz]))是一个积极的回顾, 检查你的情况“之前有一个元音”。 第二部分([aeiouy])只匹配一个辅音

有关环顾四周向后看向前看)的说明,请在Web上搜索。 即使在上,你也会找到大量的解释和例子

有关regex101中的示例,请参见https://regex101.com/r/Ze9hr0/1

你的正则表达式说“我想匹配一个辅音;它后面应该跟一个元音”。但是你的要求是“我想匹配一个元音;它前面应该有一个辅音”

更准确地说,您希望从前向断言(?=...)切换到后向断言(?<=...),并可能理解前后向断言的含义。查找添加了一个条件,但与满足该条件的文本不匹配(或“使用”)。所以

(?<=[b-df-hj-np-tv-xz])[aeiouy]

匹配元音,但前提是前一个字符满足lookback

相关问题 更多 >