Regex 排除正则表达式中的某个双字符
我很难用正则表达式来表达我的想法 到目前为止,我的模式是这样的(Python详细风格正则表达式) 坏的:Regex 排除正则表达式中的某个双字符,regex,Regex,我很难用正则表达式来表达我的想法 到目前为止,我的模式是这样的(Python详细风格正则表达式) 坏的: 您可以有如下内容: ^([a-zA-Z0-9]+[\ \-]?)*[a-zA-Z0-9]+$ 如果你总是想有两个或更多的单词,你可以用下面的来代替 ^([a-zA-Z0-9]+[\ \-])+[a-zA-Z0-9]+$ 试试这个: (?P<text> [a-zA-Z0-9]+ ([ -][a-zA-Z0-9]+)* ) (?P [a-zA-Z0-9]+ ([-][a
您可以有如下内容:
^([a-zA-Z0-9]+[\ \-]?)*[a-zA-Z0-9]+$
如果你总是想有两个或更多的单词,你可以用下面的来代替
^([a-zA-Z0-9]+[\ \-])+[a-zA-Z0-9]+$
试试这个:
(?P<text>
[a-zA-Z0-9]+
([ -][a-zA-Z0-9]+)*
)
(?P
[a-zA-Z0-9]+
([-][a-zA-Z0-9]+)*
)
一种简单的方法可能是只添加第二个正则表达式,以重新测试通过第一个正则表达式的字符串的双空格/破折号。它不是超高效的,但编写起来简单快捷。难道你不能从中间删除*
,hello wo rld可以接受吗?@Dgrin91建议的速度损失可能是最小的,同时保持你的代码更可读、模块化和易于维护。@KevinDiTraglia不,因为这样一来,hello-w-orld
将失败,即使它应该工作。正确,hello-w-orld
应该工作。我宁愿不做第二个正则表达式,因为它更难集成。代码被设置为具有可配置正则表达式的对象实例。为了使用2个正则表达式(或者一个运行2个正则表达式的函数),我必须修改模块本身和所有调用它的东西。我认为这就是想法,他确实希望这样的东西能够工作。也许更好的例子是这样的。@ctn好的,我修复了那个部分。虽然我不能完全确定OP是否想要匹配h
oh,但这是可行的。谢谢我还考虑过用你最初的想法和OR^(([a-zA-Z0-9]+[\\-]?)+|[a-zA-Z0-9]+)$
@SamIam,我刚才提到过。现在你的答案是最完整的:)完美。非常感谢。我从来没有想过将前两部分打包成一个组。哦,对了,*允许0。无论如何,我错了。这与0
和h
匹配。只有h
应该匹配。所以关闭。为什么不希望0
?确切的规则是什么?这些数字可以接受吗?
^([a-zA-Z0-9]+[\ \-]?)*[a-zA-Z0-9]+$
^([a-zA-Z0-9]+[\ \-])+[a-zA-Z0-9]+$
(?P<text>
[a-zA-Z0-9]+
([ -][a-zA-Z0-9]+)*
)