2013-01-24 94 views
0

我需要構建一個RegEx以從給定字符串中刪除前導「The」或「A」或「An」和「spaces」。使用正則表達式刪除前導字符串

例如,給定的字符串是:

敏捷的棕色狐狸跳過懶狗

用正則表達式我想要的龍頭「」被刪除,只返回

敏捷的棕色狐狸跳過了懶狗

我嘗試(從評論添加)

^*(?<=[The|An|A]\s){1}.* 

它工作正常,但在一個場景中它沒有返回預期的結果。請參閱下面的場景。

輸入:快速褐色fox - >結果=快速褐色fox

輸入:快速棕色狐狸 - >結果=快速褐色fox

輸入:在一個晴朗的日子 - >結果=一個晴天(預計是在晴天 天..因爲字符串不是以A開頭)

輸入:美國銀行 - >結果=一家銀行(預計是美國銀行。因爲字符串不是以An開頭)

+1

什麼編程語言是您使用? –

+2

更重要的是,[你有什麼嘗試?](http://whathaveyoutried.com) – 2013-01-24 06:56:50

回答

0

下面是完整的一個行中的Perl:

perl -e 'my $a = "The quick brown fox jumps over the lazy dog"; $a =~ s/^\s*(?:The|An|A)\s+//gi; print $a;' 

,它替換的部分是:

$a =~ s/^\s*(?:The|An|A)\s+//gi; 

符合你的話,空間的正則表達式是/^\s*(?:The|An|A)\s+/

+1

這個正則表達式從給定的字符串中檢索這些字符。但我想要沒有他們的字符串。 – Kiran

+0

它不檢索它們(因爲*非捕獲*'(?:..)'結構)。它將用空字符串替換匹配的部分。根據你使用的語言,替換可能有不同的語法 –

2

你自己試過了什麼?您想要實現的並不困難,請嘗試this tutorial on Regular-Expresions.info

你在考慮複雜。試試這個:

^(The|An|A)\s+ 

並替換爲空字符串。

看到它here on Regexr

^字符串的開頭匹配。

(The|An|A)一個交替,匹配第一個擬合替代。

\s+至少匹配一個跟隨的空格。

變化

敏捷的棕色狐狸

一個敏捷的棕色狐狸

在一個陽光明媚的日子

美國銀行

敏捷的棕色狐狸

敏捷的棕色狐狸

在一個陽光明媚的日子

美國銀行

+0

我試着用這個正則表達式。^*(?<= [The | An | A] \ s){1}。* 它工作正常,但在一種情況下它不會返回預期結果。請參閱下面的場景。 **輸入:**快速棕色狐狸 - >結果=快速棕色狐狸 **輸入:**快速棕色狐狸 - >結果=快速棕色狐狸 **輸入:**在晴朗的一天 - - >結果=陽光燦爛的日子(預計是在晴朗的一天..因爲字符串不是以A開頭) **輸入:**美國銀行 - >結果=一家銀行(預計是美國銀行..因爲該字符串不是以An開頭的)。 – Kiran

+0

我已將您的評論添加到您的問題中,並更新了我的答案。 – stema

相關問題