Python中的波斯语正则表达式

时间:2014-01-23 05:43:52

标签: regex python-3.x farsi

我在Python 3中有这个Python正则表达式代码,我不明白。我很感激任何帮助,通过一些例子来解释它究竟是做什么的。代码是这样的:

# encoding=utf-8
import re
newline = re.sub(r'\s+(((زا(ی)?)?|ام?|ات|اش|ای?(د)?|ایم?|اند?)[\.\!\?\،]*)', r'\1 ', newline)

1 个答案:

答案 0 :(得分:3)

这是你的正则表达式:

\s+(((زا(ی)?)?|ام?|ات|اش|ای?(د)?|ایم?|اند?)[\.\!\?\،]*)

这是一个可视化:

Regular expression visualization

Debuggex Demo

您的替换为r'\1 ',这意味着替换您在第一组中找到的内容后跟空格。我不读波斯语,但这是另一个例子:

\s+((a|b)[./?]*)

Regular expression visualization

Debuggex Demo

所以让我们执行一些代码:

>>> newline = '     a?    b?        a.'
>>> re.sub('\s+((a|b)[./?]*)', r'\1 ', newline)
'a? b? a. '

这会占用特定字符组(前导\s+)之前的额外空格,并将其更改为标识的group 1后跟一个空格(r'\1 ')。