2024-10-01 09:27:26 发布
网友
我需要从字符串中删除以反斜杠开头的单词。我尝试了以下(和一些小的变化),但这些词没有删除。在
test = "(students \u2019 education, 1, 3) || (DCUCampaign 8, 2, 2) || (Projects Stories, 1, 2) || (DCU, 14, 1) || (\u201c DCU graduate \u201d, 1, 4)"
以下是我尝试过的正则表达式:
\u2019实际上不是\u2019,而是^{}:'
\u2019
它是用^{}编码的,只有一个字符。在
另一个例子:
这是换行符:\n在代码中,这不会打印\n,而是一个新行(如按ENTER)。在
\n
要删除不在ascii字符空间(0到127)中的所有unicode值,请使用以下代码:
text = "".join([i if ord(i) < 128 else "" for i in text])
或者,如果要用空格" "替换它们:
" "
您还可以使用如下所示的regex:
注意:\x7F是十六进制的127。在
\x7F
由于\是一个非单词字符,为了防止在text\word中匹配\word,您需要使用一个\B-一个在{}不匹配的地方匹配的非单词边界。在
\
text\word
\word
\B
简而言之:\B匹配非单词字符之前的字符串开头,或者非单词字符之后的字符串末尾,或者相同类型的字符之间(即bb,b1,b_,,.,等等)。在
bb
b1
b_
,.
请参阅更多说明here, Not-a-word-boundary: ^{} at rexegg.com。在
使用
re.sub(r"\B\\\w+", "", str(test)) ^^
如果需要使非字边界具有Unicode意识,请不要忘记传递flags=UNICODE。在
flags=UNICODE
您应该使用:
re.sub(r"\\\w+", "", str(test))
您不需要单词边界\b,只需要一个反斜杠和单词字符。 单词边界\b是介于非单词字符和单词字符之间的虚拟字符,因为非单词字符的例子有:空格、反斜杠和其他一些字符。所以你要做的是检查一个单词是否以反斜杠开头,这是互斥的。在
\b
\u2019
实际上不是\u2019
,而是^{它是用^{} 编码的,只有一个字符。在
另一个例子:
这是换行符:
\n
在代码中,这不会打印\n
,而是一个新行(如按ENTER)。在要删除不在ascii字符空间(0到127)中的所有unicode值,请使用以下代码:
或者,如果要用空格
^{pr2}$" "
替换它们:您还可以使用如下所示的regex:
^{3}$注意:
\x7F
是十六进制的127。在由于}不匹配的地方匹配的非单词边界。在
\
是一个非单词字符,为了防止在text\word
中匹配\word
,您需要使用一个\B
-一个在{简而言之:
\B
匹配非单词字符之前的字符串开头,或者非单词字符之后的字符串末尾,或者相同类型的字符之间(即bb
,b1
,b_
,,.
,等等)。在请参阅更多说明here, Not-a-word-boundary: ^{} at rexegg.com。在
使用
如果需要使非字边界具有Unicode意识,请不要忘记传递
flags=UNICODE
。在您应该使用:
您不需要单词边界
\b
,只需要一个反斜杠和单词字符。 单词边界\b
是介于非单词字符和单词字符之间的虚拟字符,因为非单词字符的例子有:空格、反斜杠和其他一些字符。所以你要做的是检查一个单词是否以反斜杠开头,这是互斥的。在相关问题 更多 >
编程相关推荐