我尝试使用正则表达式进行以下提取(标记/ 和页面/ 之后的文字):
abc
/页/ 15
abc
15
所以,基本上,我需要一个模式,它将从上面的字符串中捕获每组2个组。 结果应该是:
/prefix/(?:tag)/([^/]+)/(?:page)/([^/]+)
模式完全符合我的需要,但仅适用于第一个字符串。如果可以修改它以便它将返回第二个和第三个字符串所需的结果,那将是很好的。
任何帮助将不胜感激! 谢谢,
答案 0 :(得分:2)
为什么不使用
var folders = myValue.Split('/');
var matches = folders.Skip(1)
.Where((f, i) => folders[i] == "tag" || folders[i] == "page");
比使用正则表达式更容易阅读并且可能更有效。
答案 1 :(得分:0)
可以帮助你的正则表达式
/(prefix)/(?:tag|page)/([^/]+)
regex demo就在这里。
基本上,正则表达式匹配/
后跟prefix
(捕获到第1组),然后是/
,然后是tag
或page
,后跟另一个/
,然后正则表达式引擎尝试将除/
以外的一个或多个字符捕获到第2组。
<强>更新强>:
对于评论中讨论的问题,请尝试以下模式(demo):
(?=\S)(?:(?:/(abc))(?:/[^/]+)*?)?(?:/(\d+))?$