Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.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 Linux正则表达式错误:";无与伦比的斜杠和大括号”;_Regex_Linux - Fatal编程技术网

Regex Linux正则表达式错误:";无与伦比的斜杠和大括号”;

Regex Linux正则表达式错误:";无与伦比的斜杠和大括号”;,regex,linux,Regex,Linux,我有一些字符串,其中包括: 103120!WIFF SOFTBALL BAT I !25 !20 !01-JUN-90 103121!WIFF SOFTBALL BAT II !30 !24 !01-JUN-90 我需要为grep编写一个正则表达式,它以“bat”显示字符串,以90结尾 grep ‘^.*BAT((.*!)\{\1}))\{\3}90$' 出现错误:不匹配\{。 我已经测试了其中哪一个是不好的,但没有得到任何结果。错误与未经扫描的}有关。您已经尝试在POSIX BRE模式中

我有一些字符串,其中包括:

103120!WIFF SOFTBALL BAT I  !25 !20 !01-JUN-90
103121!WIFF SOFTBALL BAT II !30 !24 !01-JUN-90
我需要为
grep
编写一个正则表达式,它以“bat”显示字符串,以90结尾

grep ‘^.*BAT((.*!)\{\1}))\{\3}90$'
出现错误:
不匹配\{

我已经测试了其中哪一个是不好的,但没有得到任何结果。

错误与未经扫描的
}
有关。您已经尝试在POSIX BRE模式中使用区间量词,但是您没有逃过
{
}

然而,似乎您可以使用

grep 'BAT.*90$' file

这里的
BAT.*90$
POSIX BRE模式匹配

  • BAT
    -a
    BAT
    子字符串
  • *
    -任何0+字符
  • 90$
    -
    90
    位于字符串末尾(此处的
    grep
    默认情况下按行操作)

由于使用了no
-o
选项,
grep
将输出包含此模式的整行,不需要
^.*.
部分。

您的意思是
grep'BAT.*90$”文件
?是的,我需要它。非常感谢,对于新手来说,很难习惯正则表达式。我不理解错误消息,但您有两个未替换的右大括号(
}
),没有相应的未替换的左大括号,这使得正则表达式无效。