我需要构建一个RegEx来从给定字符串中删除前导“The”或“A”或“An”和“spaces”。
例如,给定的字符串是:
快速的棕色狐狸跳过懒狗
使用正则表达式我希望删除前导“The”并返回
快速的棕色狐狸跳过懒狗
我试过(从评论中添加)
^*(?<=[The|An|A]\s){1}.*
它工作正常但在一种情况下它没有返回预期的结果。请参阅下面的方案。
输入:快速棕色狐狸 - &gt;结果=快速棕色狐狸
输入:快速棕色狐狸 - &gt;结果=快速棕色狐狸
输入:在晴天 - &gt;结果=晴天(预计是晴天 day ..因为字符串不是以A)开头的
输入:美国银行 - &gt;结果=一家银行(预计是美国的An bank ..因为字符串不是以An)开头的
答案 0 :(得分:4)
你自己尝试过什么?你想要达到的目标并不困难,例如尝试this tutorial on Regular-Expresions.info
你正在考虑复杂化。试试这个:
^(The|An|A)\s+
并替换为空字符串。
^
匹配字符串的开头。
(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+/