2012-11-08 41 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

相關問題