2012-11-08 36 views
1

捕获两个标记之间的字符串的最短解决方案是什么?分隔符之间的捕获字符串

例如,假设我有

blahblahblah --- foobar-- blahblahblah

我想捕捉 “foobar的”。

我可以很容易地用正则表达式捕获字符串“--- foobar--”。

但因为我不希望前缀“---”和后缀“ - ”,我需要许多步骤来清理结果:

  1. 得到前缀的位置“---” (因为我们已经捕获了集团,我们知道这个位置是0)
  2. 得到“---”的长度(为了举例,我们假设我们不知道限制器的大小,它可以是“---”或“ - ”或“ - ”)
  3. 获取后缀“ - ”的位置,从位置开始position_prefix + prefix_length
  4. substringtring between position_prefix + prefix_length和position_suffix

当然,如果我需要它,我可以建立自己的这样一个功能,但是那里已经有了一个内置的解决方案吗?

类似captureWithoutDelimiters(group_regex,prefix_regex,suffix_regex)?

回答

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 
+0

我不知道捕获组,似乎是工作的理想工具! – Mikarnage

1

最短解决方案可能会

.split("-+")[1] 

如果您需要---作为前缀,--作为后缀,你让-在文本的任何地方,然后拆分解决方案

.split("---")[1].split("--")[0] 

请参阅this demo

相关问题