Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 排除正则表达式中的某个双字符_Regex - Fatal编程技术网

Regex 排除正则表达式中的某个双字符

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

我很难用正则表达式来表达我的想法

到目前为止,我的模式是这样的(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-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]+)*
)