我試圖提取由*
從字符串使用正則表達式,如串*sample*
,在這裏我想提取sample
包圍的話,但我無法做出正確的正則表達式特定的詞。提取使用正則表達式
我試過以下正則表達式[*]{1}.*[*]{1}, ^[*]{1}.*[*]{1}$?
,但它不起作用。
我試圖提取由*
從字符串使用正則表達式,如串*sample*
,在這裏我想提取sample
包圍的話,但我無法做出正確的正則表達式特定的詞。提取使用正則表達式
我試過以下正則表達式[*]{1}.*[*]{1}, ^[*]{1}.*[*]{1}$?
,但它不起作用。
採取下面的例子:
this is a *sample* string, but not *really*
以下將第一捕獲組中的匹配sample* string, but not *really
:
\*(.*)\*
雖然以下將匹配sample
作爲第一捕獲組:
\*([^*]*)\*
你可以試試這個正則表達式
(?<=\*).*(?=\*)
如果你的編程語言支持回顧後和預讀。如果你想匹配兩個*
S之間的最小可能的文本,那麼你可以去懶惰量詞這樣
(?<=\*).*?(?=\*)
這會對''* * * * *''或'「* this *和* that *」'做什麼? –
@ muistooshort是的,它是一個貪婪的量詞,它儘可能地在兩個'*'之間匹配。包括懶惰量詞也只是爲了說清楚。 –
我的第一個工作正常。您可以在圓括號中添加捕獲組:
[*]{1}(.*)[*]{1}
但是,這非常冗長。你可以這樣做:
\*(.*)\*
你用\逃避*因爲它是一個特殊字符。
試試這個:
\*[^*]*\*
這意味着\*
:*,[^*]*?
0或多個非*,\*
:*
http://gskinner.com/RegExr?2v0e4
現在,如果你不想 「提取」 的*
,你可以做這樣的:
(?:\*)([^*]*)(?:\*)
這將只放一個捕獲組(()
部分)的文本,並把*
在非捕獲組中((?:)
部分)
我會爲這一個去。如果你的正則表達式支持害羞的匹配,那麼後者的替代公式就是'\ *(。*?)\ *'。 – pico