2012-10-12 127 views
4

如何定位從字符串的結尾一句:
complexthing---50 other-_-50 MORE__------50正則表達式 - 從字符串的結尾搜索

我想用(50)結束了,但這「complexthing- - 」可以結束 - 所以在這種情況下,我不能違背在‘ - ’任何可能使其混淆乞討所以對我來說最簡單的正則表達式是讓它得到任何在年底和突破‘ - ’

-(.*) 

總有一個 -前每50到單獨的數字和字符串,我想指定的號碼(50)

回答

8

如果我理解正確的話,這樣的事情可能工作:

-(\d+)$ 

匹配連字符( - ),其次是剛剛字符串($)結束前的一個或多個數字(\ d +)。僅捕獲數字((...))。

0

您可以使用OR運算符,|,讓它決定它是否該或者那個。

+0

難道你不是指「||」 (而不是「|」)? –

+1

正則表達式有|不||。 – transilvlad

1

想想你問什麼:

  • 一個數字它總是在字符串
  • 緊跟一個-字符的數字結束。
  • 一些東西,遵循-性格,這本身不是,一個字-

這些都是對您的問題進行表述的不同方式,因爲我們走的時候會變得不太具體。其中任何一種可能都適合您的需求,但我會覆蓋每個案例以說明它如何做。

這些可以拼寫在許多不同的方式。根據您使用正則表達式的味道,其中的一些方法,可能需要不同的轉義(例如,X+ VS X\+ VS XX*),而不是所有可能的各種風格的支持。

「A號碼,其總是在字符串的末尾」:

([0-9][0-9]*)$ 
([0-9]+)$ 
(\d+)$ 

正則表達式模式是greedy,即:它們多,因爲他們能相匹配。因此,在第一種情況下,要求字符串末尾至少有一個數字(「在字符串末尾指定爲$」),最終會給出字符串末尾的整個數字。

「許多緊跟一個-字符」:而不是指定「字符串的結束」

-([0-9][0-9]*) 
-([0-9]+) 
-(\d+) 

這裏,我們指定它應該遵循-字符。因爲[0-9]-字符本身不匹配,所以我們不需要做任何事情來避免捕獲-

「它遵循的東西 - 性格,這是不是本身就是一個 - 字符」:

-([^-][^-]*) 
-([^-]+) 

這一個是有點棘手:與其指定我們希望有一個數字,我們只是指定我們不要想要一個破折號,通過指定一個否定匹配([^X])。有時在字符類中匹配一個-字符可能會非常棘手,但規則是「總是在開始處指定-」,並且您應該沒問題。

相關問題