![](/img/trans.png)
[英]regex to get all occurrences with optional next character or end of string
[英]Regex - find all optional group occurrences
我正在JavaScript中创建正则表达式,以查找所有出现的组,所有可选的。 我发现了很多问题,但是没有答案对我有用。
我正在使用xregexp
软件包,但是为了简单起见,我创建了在线演示。
输入:
new-rooms-3-area-50
new-foo-rooms-3-area-50-bar
new-qwe-more-rooms-3-asdads-anything-area-50-uiop
new-blah-more-area-50-else
要求的输出:
["rooms-3", "area-50"]
["rooms-3", "area-50"]
["rooms-3", "area-50"]
["area-50"]
我现在有了
new-(rooms-\d+)?.*(area-\d+)
正则表达式。 可能我不应该使用.*
set,但是我不知道如何跳过一些不需要的部分。
在线演示: https : //regex101.com/r/QvmYN0/2/
您可以在regex101
站点上派生并保存固定的解决方案。
您可以使用
new-(?:.*?(rooms-\d+))?.*?(area-\d+)
^^^^^^^^^^^^^^^^^^^
关键是使捕获组成为必需,但将其放入可选的非捕获组中。 最后一个*
贪婪量词将转换为懒惰的量词,但这不是必需的。
详细资料 :
new-
匹配强制性new-
(?:.*?(rooms-\\d+))?
-可选的(1或0次出现,贪婪匹配,即正则表达式引擎将尝试匹配组的模式)序列:
.*?
-除换行符以外的任何0+字符都应尽可能少(也就是说,惰性匹配,将跳过该模式并首先尝试后续模式,并且仅在后续模式失败后才扩展) (rooms-\\d+)
-第1组: rooms-
和1+位数字(现在,它不是可选的,必须匹配,否则整个非捕获组将匹配一个空字符串) .*?
-除换行符以外的任何0+字符都尽可能少 (area-\\d+)
-组2: area-
和1+数字。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.