Python3 中 ASCII 和 Unicode 字母之间的单词边界
Word boundary between ASCII and Unicode letters in Python3
Python3:
import re
k = "X"
s = "X测试一Q测试二XQ测试三"
print(re.split((r"\b" + k + r"\b"), s))
输出:
['X测试一Q测试二XQ测试三']
预计:
['', '测试一Q测试二XQ测试三']
属于\p{Lo}
的测
is a letterclass并且X
和测
之间没有分界线。
\b
字边界构造在 Python 3.x re
模式中默认为 Unicode-aware,因此您可以使用re.ASCII
/ re.A
option,或内联 (?a)
标志:
import re
k = "X"
print( re.split(fr"(?a)\b{k}\b", "X测试一Q测试二XQ测试三") )
参见regex demo and the Python demo。
如果您需要确保X
前后没有ASCII字母,请使用(?<![a-zA-Z])X(?![a-zA-Z])
。或者,包括数字,(?<![a-zA-Z0-9])X(?![a-zA-Z0-9])
.
Python3:
import re
k = "X"
s = "X测试一Q测试二XQ测试三"
print(re.split((r"\b" + k + r"\b"), s))
输出:
['X测试一Q测试二XQ测试三']
预计:
['', '测试一Q测试二XQ测试三']
属于\p{Lo}
的测
is a letterclass并且X
和测
之间没有分界线。
\b
字边界构造在 Python 3.x re
模式中默认为 Unicode-aware,因此您可以使用re.ASCII
/ re.A
option,或内联 (?a)
标志:
import re
k = "X"
print( re.split(fr"(?a)\b{k}\b", "X测试一Q测试二XQ测试三") )
参见regex demo and the Python demo。
如果您需要确保X
前后没有ASCII字母,请使用(?<![a-zA-Z])X(?![a-zA-Z])
。或者,包括数字,(?<![a-zA-Z0-9])X(?![a-zA-Z0-9])
.