0

我在 Python 3 中有这个我不理解的 Python 正则表达式代码。我很感激任何帮助来解释它到底做了几个例子。代码是这样的:

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

1 回答 1

3

这是你的正则表达式:

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

这是一个可视化:

正则表达式可视化

调试演示

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

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

正则表达式可视化

调试演示

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

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

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

于 2014-01-23T05:51:17.513 回答