在两个标记之间捕获字符串的最短解决方案是什么?
例如,让我们假设我有
blahblahblah --- foobar-- blahblahblah
我想拍摄“foobar”。
我可以用正则表达式轻松捕捉字符串“--- foobar--”。
但由于我不想要前缀“---”和后缀“ - ”,我需要很多步骤来清理结果:
当然,如果我需要的话,我可以自己构建这样的功能,但是已经有了内置的解决方案吗?
像captureWithoutDelimiters(group_regex,prefix_regex,suffix_regex)?
答案 0 :(得分:3)
怎么样:
[\w\s]+-+(\w+)-+[\w\s]+
然后你可以打印出第一个捕获组捕获的内容。
说明:
[\w\s]+ // Match at lest 1 letter or white space character
-+ // Followed by at least 1 marker character
(\w+) // Capture the word inside the markers
-+ // Followed by more marker characters
[\w\s]+ // Followed by at lest 1 letter/white space character
答案 1 :(得分:1)
最短解决方案可能是
.split("-+")[1]
如果您需要---
作为前缀而--
作为后缀,并且您在文本的任何位置都允许-
,那么拆分解决方案
.split("---")[1].split("--")[0]
请参阅this demo。