正则表达式匹配水平空白区域

Mem*_*mir 8 regex unicode python-2.7 python-unicode

我需要Python2中的正则表达式才能匹配水平白色空格而不是换行符.

\ s匹配包括换行符在内的所有空格.

>>> re.sub(r"\s", "", "line 1.\nline 2\n")
'line1.line2'
Run Code Online (Sandbox Code Playgroud)

\ h根本不起作用.

>>> re.sub(r"\h", "", "line 1.\nline 2\n")
'line 1.\nline 2\n'
Run Code Online (Sandbox Code Playgroud)

[\ t]有效,但我不确定我是否遗漏了其他可能的空白字符,特别是在Unicode中.如\ u00A0(非破空间)或\ u200A(发空间).以下链接中有更多空白字符.https://www.cs.tut.fi/~jkorpela/chars/spaces.html

>>> re.sub(r"[\t ]", "", u"line 1.\nline 2\n\u00A0\u200A\n", flags=re.UNICODE)
u'line1.\nline2\n\xa0\u200a\n'
Run Code Online (Sandbox Code Playgroud)

你有什么建议吗?

Mem*_*mir 8

我最终使用[^\S \n]而不是指定所有Unicode空格.

>>> re.sub(r"[^\S\n]", "", u"line 1.\nline 2\n\u00A0\u200A\n", flags=re.UNICODE)
u'line1.\nline2\n\n'

>>> re.sub(r"[\t ]", "", u"line 1.\nline 2\n\u00A0\u200A\n", flags=re.UNICODE)
u'line1.\nline2\n\xa0\u200a\n'
Run Code Online (Sandbox Code Playgroud)

它按预期工作.