我在 Python 3 中有这个我不理解的 Python 正则表达式代码。我很感激任何帮助来解释它到底做了几个例子。代码是这样的:
# encoding=utf-8
import re
newline = re.sub(r'\s+(((زا(ی)?)?|ام?|ات|اش|ای?(د)?|ایم?|اند?)[\.\!\?\،]*)', r'\1 ', newline)
我在 Python 3 中有这个我不理解的 Python 正则表达式代码。我很感激任何帮助来解释它到底做了几个例子。代码是这样的:
# encoding=utf-8
import re
newline = re.sub(r'\s+(((زا(ی)?)?|ام?|ات|اش|ای?(د)?|ایم?|اند?)[\.\!\?\،]*)', r'\1 ', newline)
这是你的正则表达式:
\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 '
)。