我正在使用正则划分从文本中剥离"子弹点"。这些子弹点通常是在Unicode范围中发现的符号,例如几何形状( u25a- u25ff)或类似的符号。以下是这样的子弹的一个例子:
◉这是子弹 ♦︎这也是子弹 ☉这也是如此这不是子弹。
我正在使用以下正则表达式匹配以下要点:
s*([u00a4u00b7]|[u2010-u2017]|[u2020-u206f]|[u2300-u23f3]|[u25a0-u25ff]|[u2600-u26ff]|[u2700-u27bf]|[u2b00-u2bff])s*
这在Ruby中起作用(请参阅http://rubular.com/r/o7zoburmlt上的一个示例),但在Python中,它与任何字符串的第一个字符匹配。例如,匹配字符串This is not a bullet
中的T
字符。您可以将上面的正则和示例文本复制到http://www.pythonregex.com/为自己查看。
用UNICODE
标志编译了正则表达式。
如何使Python的Regex引擎对此表达式很好?
使生成您表达式的字符串以Unicode为单位,以便将序列解释为Unicode字符,而不是普通的u
,2
,0
等。尝试以下内容:
regex = re.compile(u"s*([u00a4u00b7]|[u2010-u2017]|" +
"[u2020-u206f]|[u2300-u23f3]|[u25a0-u25ff]|" +
"[u2600-u26ff]|[u2700-u27bf]|[u2b00-u2bff])s*", re.UNICODE)
,您很可能不会使用Python 3.*,其中所有字符串都是Unicode Afaik。