【发布时间】:2016-08-31 17:39:45
【问题描述】:
我有一个匹配以下行之一的有效正则表达式:
- 以下列表中的标点符号
[.,!?;] - 以字符串或空格开头的单词。
这是有问题的正则表达式([.,!?;] *|(?<= |\A)[\-'’:\w]+)
我需要它做的是让它匹配 3 个实例。因此,例如,理想的最终结果应该是这样的。
Sample text: "This is a test. Test"
Output
"This" "is" "a"
"is" "a" "test"
"a" "test" "."
"test" "." "Test"
我尝试简单地将 {3} 添加到末尾,希望匹配 3 次。然而,这导致它根本不匹配任何内容或偶尔出现奇怪的字符。我尝试过的另一种可能性是像([.,!?;] *|(?<= |\A)[\-'’:\w]+)([.,!?;] *|(?<= |\A)[\-'’:\w]+)([.,!?;] *|(?<= |\A)[\-'’:\w]+) 这样重复整个正则表达式 3 次,这看起来很可怕,但我希望它会起作用。这会产生奇怪的效果,但前提是至少有一个匹配项是之前列出的标点符号之一。
我们将不胜感激。
我使用new regex module found here 以便进行重叠搜索。
【问题讨论】:
-
如果您使用 actual Python 代码实际制作一个简短且自包含的示例,则更容易看出哪里出了问题。
-
您特别想要哪个正则表达式尝试的示例?围绕它的 python 代码应该没有什么区别,但如果你只需要上下文,我可以把它放进去。
标签: python regex python-3.5