在Python中替换以反斜杠开头的单词

2024-10-01 09:27:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要从字符串中删除以反斜杠开头的单词。我尝试了以下(和一些小的变化),但这些词没有删除。在

test = "(students \u2019 education, 1, 3) || (DCUCampaign 8, 2, 2) || (Projects Stories, 1, 2) || (DCU, 14, 1) || (\u201c DCU graduate \u201d, 1, 4)"

以下是我尝试过的正则表达式:

^{pr2}$

Tags: 字符串test单词projectsstorieseducation斜杠students
3条回答

\u2019实际上不是\u2019,而是^{}:'

它是用^{}编码的,只有一个字符。在

另一个例子:

这是换行符:\n在代码中,这不会打印\n,而是一个新行(如按ENTER)。在

要删除不在ascii字符空间(0到127)中的所有unicode值,请使用以下代码:

text = "".join([i if ord(i) < 128 else "" for i in text])

或者,如果要用空格" "替换它们:

^{pr2}$

您还可以使用如下所示的regex:

^{3}$

注意:\x7F是十六进制的127。在

由于\是一个非单词字符,为了防止在text\word中匹配\word,您需要使用一个\B-一个在{}不匹配的地方匹配的非单词边界。在

简而言之:\B匹配非单词字符之前的字符串开头,或者非单词字符之后的字符串末尾,或者相同类型的字符之间(即bbb1b_,.,等等)。在

请参阅更多说明here, Not-a-word-boundary: ^{} at rexegg.com。在

使用

re.sub(r"\B\\\w+", "", str(test))
         ^^

如果需要使非字边界具有Unicode意识,请不要忘记传递flags=UNICODE。在

您应该使用:

re.sub(r"\\\w+", "", str(test))

您不需要单词边界\b,只需要一个反斜杠和单词字符。 单词边界\b是介于非单词字符和单词字符之间的虚拟字符,因为非单词字符的例子有:空格、反斜杠和其他一些字符。所以你要做的是检查一个单词是否以反斜杠开头,这是互斥的。在

相关问题 更多 >