Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.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,我想要一个和你的衣服相配的图案 ab a-b a b a b a-b 其中a和b可以是任何模式,但为了简单起见,它们被简化为a和b 在所有这些情况下,我想返回“ab”。我可以用正则表达式来完成这一切吗?或者我必须接收匹配的表达式以及分隔符,并通过替换所述字符等方式在代码中处理它们吗?可能会误解您的意思,如果是这样,我对此表示歉意。 您可以在regexp中使用引号(), 例如,对于您的案例: (a)(-|\s+)?(b) 然后使用\1和\3引用a和b。所以\1\3意味着ab 注意:某些工具可

我想要一个和你的衣服相配的图案

ab
a-b
a b
a  b
a-b
其中
a
b
可以是任何模式,但为了简单起见,它们被简化为
a
b


在所有这些情况下,我想返回
“ab”
。我可以用正则表达式来完成这一切吗?或者我必须接收匹配的表达式以及分隔符,并通过替换所述字符等方式在代码中处理它们吗?

可能会误解您的意思,如果是这样,我对此表示歉意。
您可以在
regexp
中使用引号
()

例如,对于您的案例:

(a)(-|\s+)?(b)
然后使用
\1
\3
引用
a
b
。所以
\1\3
意味着
ab

注意:某些工具可能需要改用
\\1\\3

检查您语言的文档以了解确切的regexp规则

我不确定您将在何处使用此选项,这里我使用
sed
作为示例:

$ echo -e "ab\na-b\na b\na  b\n"|sed -E 's/^(a)(-| +)?(b)$/\1\3/'
ab
ab
ab
ab
注意这里使用的正则表达式是
^(a)(-|+)?(b)$
^
$
用于匹配字符串/行的开头和结尾

换句话说,这些行可以被该regexp接受——在某些情况下,它已经被验证了。

但是,如果您想
返回
ab
,这不是简单的匹配,而是需要一个替换/重新组织的附加步骤。

当您说“以后”,您的意思是以后在代码中操作捕获的组吗?因为尝试您的建议:返回“完全匹配”的
a-b
a-b
,这可能是要直接访问的文本。这用于验证html表单。我只想提交'ab',不需要验证服务器代码中发布的数据。我猜我不能在正则表达式中这样做,对吗?如果是的话,你能告诉我如何连接它吗?谢谢。要重新表述您的回答,似乎不可能将匹配的组组合起来创建“组合匹配”。该位必须作为后期处理完成。
我想在所有这些情况下返回“ab”
返回是什么意思?任何正则表达式引擎都没有规定在不匹配/使用它的情况下跳过中间内容,如果这是你的意思的话。我使用的是html格式的正则表达式。我希望表单接受
ab
的所有变化,但只提交
ab
。问题是我是否可以只使用正则表达式,或者我是否需要添加一些java脚本来实现这一点。