1

我有一个用于各种标题的文本输入字段,并帮助最大限度地减少搜索结果中的误报(内部搜索不是最好的),我需要一个 REGEX 模式,它查看输入字符串的前四个字符并删除单词(和单词后面的空格)_the _ 如果它只在开头。

例如,如果我们正在谈论乐队的名称,并且有人进入滚石乐队,我需要的是让条目只说滚石乐队

可以使用正则表达式自动去除这 4 个字符吗?

4

3 回答 3

3

应用正则表达式

^(?:\s*the\s*)?(.*)$

将匹配任何字符串,并在反向引用号中捕获它。1,除非它以the(可选地被空格包围)开头,在这种情况下 backref 没有。1 将包含以下内容。

您需要在您的正则表达式引擎中设置不区分大小写的选项才能使其正常工作。

于 2010-10-16T20:30:05.560 回答
3

您可以使用^标识符来匹配行首的模式,但是对于您使用它的目的,它可以被认为是矫枉过正。

很多语言都支持字符串操作,这是一个更合适的选择。我可以提供一个例子来用 Python 演示,

>>> def func(n):
    n = n[4:len(n)] if n[0:4] == "The " else n  
    return n

>>> func("The Rolling Stones")
'Rolling Stones'
>>> func("They Might Be Giants")
'They Might Be Giants'
于 2010-10-16T19:25:45.933 回答
1

由于您没有用语言进行澄清,因此这是 Perl 中的解决方案:

my $str = "The Rolling Stones";

$str =~ s/^the //i;

say $str; # Rolling Stones
于 2010-10-17T12:40:55.533 回答