Regular expression that matches values after meetting some keyword
我有一些用空格分隔的路径,但没有用s/s分隔,即:空格、斜杠、空格
val1/val2 val4/val7关键字/somevalue aaa/bbb ccc/ddd eee/fff
- 第一个元素:val1/val2
- 第2个元素:VAL4/VAL7
- 第三个元素:关键字/somevalue
- 第四要素:AAA/BBB
- 第五要素:CCC/DDD
- 第6要素:EEE/FFF
当我找到包含someValue的关键字时:
1 | (keyword / [^/\s]*) |
上述匹配后的唯一可接受值可以是AAA/BBB和CCC/DDD,无论顺序如何,无论重复。
例如,我应该得到一个匹配的
任何其他组合都应返回unmatch,例如:当关键字/somevalue后面有一些额外的"element"时
(…)
我应该被打败。
可以用正则表达式来实现吗?我想用正则表达式来解决这个问题,但我坚持了。
让我们试试下面的regex:
1 | keyword \/ \w+ ((?:aaa \/ bbb|ccc \/ ddd)(?: |$))+$ |
哪里:
keyword 是你的固定关键字aaa 、bbb 、ccc 和ddd 是字面上要匹配的。aaa \/ bbb 是允许的第一对,ccc \/ ddd 是第二对。(?: |$) 检查一对夫妇后面是否有空格或一行$ 的末尾。
我必须强调,强烈建议使用编程语言进行提取。您应该拆分字符串并检查分区。