当前位置: 首页 > 面试题库 >

在Python中,如何列出与POSIX扩展正则表达式[[:space:]`匹配的所有字符?

楚威
2023-03-14
问题内容

在Python中,如何列出POSIX扩展正则表达式匹配的所有字符[:space:]

有没有一种编程的方法来提取覆盖的Unicode代码点[:space:]


问题答案:

使用生成器代替列表推导,而xrange不是range

>>> s = u''.join(unichr(c) for c in xrange(0x10ffff+1))
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<stdin>", line 1, in <genexpr>
ValueError: unichr() arg not in range(0x10000) (narrow Python build)

哎呀:一般使用sys.maxunicode

>>> s = u''.join(unichr(c) for c in xrange(sys.maxunicode+1))
>>> import re
>>> re.findall(r'\s', s)
[u'\t', u'\n', u'\x0b', u'\x0c', u'\r', u' ']

糟糕:嗯,“不间断空间”等如何?

>>> re.findall(r'\s', s, re.UNICODE)
[u'\t', u'\n', u'\x0b', u'\x0c', u'\r', u'\x1c', u'\x1d', u'\x1e', u'\x1f', u' '
, u'\x85', u'\xa0', u'\u1680', u'\u180e', u'\u2000', u'\u2001', u'\u2002', u'\u2
003', u'\u2004', u'\u2005', u'\u2006', u'\u2007', u'\u2008', u'\u2009', u'\u200a
', u'\u2028', u'\u2029', u'\u202f', u'\u205f', u'\u3000']

那是什么东西?unicodedata.name是你的朋友:

>>> from unicodedata import name
>>> for c in re.findall(r'\s', s, re.UNICODE):
...     print repr(c), name(c, '')
...
u'\t'
u'\n'
u'\x0b'
u'\x0c'
u'\r'
u'\x1c'
u'\x1d'
u'\x1e'
u'\x1f'
u' ' SPACE
u'\x85'
u'\xa0' NO-BREAK SPACE
u'\u1680' OGHAM SPACE MARK
u'\u180e' MONGOLIAN VOWEL SEPARATOR
u'\u2000' EN QUAD
u'\u2001' EM QUAD
u'\u2002' EN SPACE
u'\u2003' EM SPACE
u'\u2004' THREE-PER-EM SPACE
u'\u2005' FOUR-PER-EM SPACE
u'\u2006' SIX-PER-EM SPACE
u'\u2007' FIGURE SPACE
u'\u2008' PUNCTUATION SPACE
u'\u2009' THIN SPACE
u'\u200a' HAIR SPACE
u'\u2028' LINE SEPARATOR
u'\u2029' PARAGRAPH SEPARATOR
u'\u202f' NARROW NO-BREAK SPACE
u'\u205f' MEDIUM MATHEMATICAL SPACE
u'\u3000' IDEOGRAPHIC SPACE


 类似资料:
  • 我在一个c程序中有以下文本字符串和regex模式: 多谢了。

  • 有没有人试图描述与正则表达式匹配的正则表达式? 由于重复的关键字,这个主题几乎不可能在网上找到。 它可能在实际应用程序中不可用,因为支持正则表达式的语言通常具有解析它们的方法,我们可以将其用于验证,以及一种在代码中分隔正则表达式的方法,可用于搜索目的。 但是我仍然想知道匹配所有正则表达式的正则表达式是什么样子的。应该可以写一个。

  • 问题内容: 我已经阅读了Stackoverflow上的其他问题,但还没有结束。抱歉,如果已经可以回答,但是我没有任何建议在那里工作。 一切都很好,然后我尝试使用其中包含挪威字符的内容(或更像unicode的内容): 如何匹配øæå等典型的unicode字符?我希望能够同时在上述标记组和文件名标记组中匹配这些字符。 问题答案: 您需要指定标志, 并 使用前缀将您的字符串输入为Unicode字符串:

  • 我试图用python及其正则表达式找到所有可能的单词/标记对或其他嵌套组合。 寻找: 我认为正则表达式也可以找到嵌套的括号单词/标记对,但它不返回它们。我该怎么做?

  • 以下模式需要一个组合正则表达式: 其中带数字的分隔符可以是空格()、减号(-)、句点(.),反斜杠(\),等于(=)。一种情况是,一个以上的分隔符(相同或不同类型)不能与任意两位数字同时出现一次以上。 有效号码- 一个有效的输入是,只要没有两个相邻的分隔符,就有16位数字被任意/无分隔符分隔。 我们想出了以下正则表达式: 它与某些模式不匹配。例如: 对于相同的数字,它匹配(如预期的)以下模式: 分

  • 我有一根线,比如: 如何匹配每行的最后一个?顺便说一句,这是我试图在Sublime的文本中做到的。这些值不一致,就像我在这里看到的,我有几百行要替换。 我尝试了,但这与相匹配。