regex - 正则表达式:接受但不捕获模式
问题描述
我想要一个匹配的模式
ab
a-b
a b
a b
a-b
wherea
和b
可以是任何模式,但为了简单起见,简化为a
和b
。
我想"ab"
在所有这些情况下返回。我可以通过正则表达式完成所有操作,还是必须接收匹配的表达式以及分隔符并通过替换所述字符等在代码中处理它们?
解决方案
可能误解了你的意思,如果是这样,我很抱歉。您可以用引号
将事物分组,
例如,您的案例:regexp
()
(a)(-|\s+)?(b)
稍后使用\1
and\3
来指代a
and b
。所以\1\3
意思是ab
。
请注意,可能需要改用某些工具\\1\\3
。
检查您的语言的文档以找出确切的正则表达式规则。
我不确定你会在哪里使用它,这里我用sed
一个例子:
$ echo -e "ab\na-b\na b\na b\n"|sed -E 's/^(a)(-| +)?(b)$/\1\3/'
ab
ab
ab
ab
注意这里使用的正则表达式是^(a)(-| +)?(b)$
, ^
and $
are 来匹配字符串/行的开头和结尾。
换句话说,这些行可以accepted
通过那个正则表达式——在某些情况下,它已经过验证。
但是,如果您愿意return
ab
,那不是简单的匹配,而是需要替换/重组的附加步骤。
推荐阅读
- python - 如何将数字除以python中任意数组中的每个元素?
- python - 创建一个 api 以使用 json 或 yaml 有效负载更新 postgres db
- r - 在R中删除一行后数据框变成数字
- javascript - 防止#content与双边栏重叠
- python - 模块错误:没有名为“py.io”的模块 Pytest Pycharm
- angular - http 等待另一个呼叫完成
- javascript - google脚本到firebase脚本身份验证异常
- google-cloud-spanner - 当强制对非交错索引进行查询时,会有任何数据局部性好处吗?
- autohotkey - 错误:此动态变量为空。如果此变量不是动态的,请从中删除 % 符号。(香港)
- redirect - 浏览器如何处理 url 域中的“@”?