【发布时间】:2020-08-04 04:22:47
【问题描述】:
p1 = re.compile(r"https?:[^\s]+[a-zA-Z0-9]")
p2 = re.compile("([\u4E00-\u9FD5a-zA-Z0-9+#&\._%\-]+)", re.U)
我想将这两种模式合并为一个,然后我可以使用'split'功能根据统一的正则表达式来分割文本。怎么做?是否有某种模式联合操作,如:
p = p1 + p2
p1 是匹配 URL 字符串的模式,p2 是基于某些字符将文本拆分为块的模式。我想得到一个匹配 p1 或 p2 的新模式。这是在 Python 中。
举例说明:
text = This is a https://www.stackoverflow.com/posts/32244/edits example.
如果我只是应用p2,文本会被拆分成:
['This', ' ', 'is', ' ', 'a', ' ','https', '://', 'www.stackoverflow.com', '/', 'posts', '/', '32244', '/', 'edits', 'example']
我不想拆分 URL,我想得到这些块:
['This',' ', 'is', ' ', 'a', ' ', 'https://www.stackoverflow.com/posts/32244/edits', ' ', 'example', '.']
这就是我想为 URL 保持模式添加 p1 的原因。我上面用 p = p1 + p2 的描述可能不准确。
【问题讨论】:
-
您在寻找
|吗?如pat1|pat2,匹配一种或另一种模式。 -
@ggorlen 没有理由不能回答...
-
@ggorlen,是的。如何应用'|'分为以上两种模式?
-
@TimBiegeleisen 似乎太琐碎而无法回答。当然,这是一个骗局,或者不值得拥有。此外,我并不完全清楚 OP 希望根据问题进行交替而不是串联。 @marlon 将这两种模式替换为
pat1和pat2。 -
当然,您首先需要更具体的模式,然后再退回到不太具体的模式。