Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 如何使用正则表达式模式删除特定单词;";仅当在文本字符串的开头?_Regex_Strip - Fatal编程技术网

Regex 如何使用正则表达式模式删除特定单词;";仅当在文本字符串的开头?

Regex 如何使用正则表达式模式删除特定单词;";仅当在文本字符串的开头?,regex,strip,Regex,Strip,我有一个文本输入字段,用于各种内容的标题,并帮助最大限度地减少搜索结果中的误报(内部搜索不是最好的),我需要有一个正则表达式模式,它查看输入字符串的前四个字符,并删除单词(以及单词后的空格)\如果它仅在开头 例如,如果我们谈论乐队的名字,而有人进入滚石乐队,我需要的是让该乐队只说滚石乐队 正则表达式可以用来自动去除这4个字符吗?您可以使用^标识符来匹配行首的模式,但是对于您使用它的目的,它可能被认为是过度使用 许多语言都支持字符串操作,这是一个更合适的选择。我可以提供一个用Python演示的示例

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

例如,如果我们谈论乐队的名字,而有人进入滚石乐队,我需要的是让该乐队只说滚石乐队


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

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

许多语言都支持字符串操作,这是一个更合适的选择。我可以提供一个用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'

您可以使用
^
标识符来匹配行首的模式,但是对于您使用该标识符的目的,可以认为它是过度使用

许多语言都支持字符串操作,这是一个更合适的选择。我可以提供一个用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'
应用正则表达式

^(?:\s*the\s*)?(.*)$
将匹配任何字符串,并在backreference no.1中捕获它,除非它以
开头
(可选地用空格包围),在这种情况下,backref no.1将包含以下内容

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

应用正则表达式

^(?:\s*the\s*)?(.*)$
将匹配任何字符串,并在backreference no.1中捕获它,除非它以
开头
(可选地用空格包围),在这种情况下,backref no.1将包含以下内容


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

由于您没有用语言进行澄清,这里有一个Perl解决方案:

my $str = "The Rolling Stones";

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

say $str; # Rolling Stones

由于您没有用语言进行澄清,这里有一个Perl解决方案:

my $str = "The Rolling Stones";

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

say $str; # Rolling Stones

在这种情况下,正则表达式不是您唯一的选择。你想用什么语言做这件事?你需要提供一点背景:你在用什么语言?在Unix命令行上,以下命令可以执行此操作:sed-i的/^the*/'file.txtRelated,但不是答案:如果要为带名称或任何类似内容编制索引,请创建两个字段。一个字段用于“显示名称”,一个字段用于“可排序”名称,后者用于确定顺序。换句话说,“滚石乐队”将被归类为“滚石乐队”,而“彼得·凯斯”将被归类为“凯斯,彼得”。当你遇到“The”时,从开头单方切掉“The”会以一种明显的方式断裂,当你遇到“X”时会以一种更微妙的方式断裂(这会导致与“X”发生冲突)。在这种情况下,正则表达式不是你唯一的选择。你想用什么语言做这件事?你需要提供一点背景:你在用什么语言?在Unix命令行上,以下命令可以执行此操作:sed-i的/^the*/'file.txtRelated,但不是答案:如果要为带名称或任何类似内容编制索引,请创建两个字段。一个字段用于“显示名称”,一个字段用于“可排序”名称,后者用于确定顺序。换句话说,“滚石乐队”将被归类为“滚石乐队”,而“彼得·凯斯”将被归类为“凯斯,彼得”。当你遇到“The”时,从开头单方切掉“The”会以一种明显的方式断裂,当你遇到“X”时,会以一种更微妙的方式断裂(这会导致与“X”发生碰撞)。