2011-03-06 92 views
1

可以在正則表達式中使用字符作爲範圍的分隔符嗎? 例如,如果我想範圍開始索引1並結束於字符$。我怎樣才能做到這一點?從數字到特定字符的正則表達式範圍

{1,我在這裏放什麼}

+1

把一些例子.. – 2011-03-06 02:53:32

+0

我有這樣的字符串$ CM-PRQRPMD $。我想獲取$符號內的字符串。問題是該字符串沒有固定的長度,因此我不能使用這個{1,10}。 – mysticfalls 2011-03-06 04:14:20

回答

1

你沒有。只需使用+?\$。例如,.+?\$至少匹配一個字符,包括第一個$.+?(?=\$):如果您要排除的$,包裹它在先行斷言

;(對於這一點,只需使用.*?\$$不能是第一個字符,雖然)。

EDIT(響應於澄清):向對$之間匹配的標識符,並假設$ s時對應的標識符,則可以只寫:\$(.*?)\$。圓括號將創建一個捕獲組,以便從匹配中排除$。如果分隔符不是標識符的一部分,並且您需要查找多個匹配項(例如$AAA$BBB$),那麼您需要使用零寬度聲明:(?<\$)(.*?)(?=\$),以便在匹配時不會吸收$

+0

我有這個字符串$ CM-PRQRPMD $。我想獲取$符號內的字符串。問題是該字符串沒有固定的長度,因此我不能使用這個{1,10}。 – mysticfalls 2011-03-06 04:30:58

+0

我必須讓它工作!感謝您的解決方案! – mysticfalls 2011-03-06 05:20:23

+0

@ user646578,不要忘記接受答案:) – 2011-03-06 06:32:33

2

這個正則表達式將匹配任何字母,數字或$符號。你需要的是什麼?

[A-Za-z0-9\$] 

更新

給OP的評論來匹配 「$ CM-PRQRPMD $」,使用下面的正則表達式:

\$[A-Z-]+\$ 
+0

我可以把這個作爲{1,[\ $]} – mysticfalls 2011-03-06 04:16:38

+0

沒有。當我說範圍0-9時,你知道我在說什麼。當我說「範圍」@ - 時,這包括了什麼?誰知道,它沒有定義。你可以做的是使用'\ p {P}'這意味着「任何標點符號」,所有\ p {}的定義[這裏](http://www.regular-expressions.info/unicode.html ) – 2011-03-06 04:27:54

+0

也請注意,方括號和大括號之間存在差異。 '[123]'表示「匹配1,2或3」,「{1,2}」表示與前一次匹配1或2次。 – 2011-03-06 04:29:24

相關問題