使用正则表达式删除前导字符串

时间:2013-01-24 06:51:17

标签: regex

我需要构建一个RegEx来从给定字符串中删除前导“The”或“A”或“An”和“spaces”。

例如,给定的字符串是:

  

快速的棕色狐狸跳过懒狗

使用正则表达式我希望删除前导“The”并返回

  

快速的棕色狐狸跳过懒狗

我试过(从评论中添加)

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

它工作正常但在一种情况下它没有返回预期的结果。请参阅下面的方案。

  

输入:快速棕色狐狸 - &gt;结果=快速棕色狐狸

     

输入:快速棕色狐狸 - &gt;结果=快速棕色狐狸

     

输入:在晴天 - &gt;结果=晴天(预计是晴天   day ..因为字符串不是以A)开头的

     

输入:美国银行 - &gt;结果=一家银行(预计是美国的An   bank ..因为字符串不是以An)开头的

2 个答案:

答案 0 :(得分:4)

你自己尝试过什么?你想要达到的目标并不困难,例如尝试this tutorial on Regular-Expresions.info

你正在考虑复杂化。试试这个:

^(The|An|A)\s+

并替换为空字符串。

here on Regexr

^匹配字符串的开头。

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

\s+至少匹配以下一个空格。

更改

  

快速的棕色狐狸

     

快速的棕色狐狸

     

在阳光灿烂的日子里

     

美国银行

  

快速的棕色狐狸

     

快速的棕色狐狸

     

在阳光灿烂的日子里

     

美国银行

答案 1 :(得分: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+/