gpt4 book ai didi

正则表达式:以特定事物结尾

转载 作者:行者123 更新时间:2023-11-29 09:25:10 26 4
gpt4 key购买 nike

我试图找到一个以 Hello 开头并以两种方式之一结束的表达式:“Hello”之后没有任何内容,或者如果它在需要以“//”开头之后还有其他内容。在//之后,一切顺利。

我试过:grep '^Hello(//.*)?$' 但这不起作用。
最后一部分有问题:(//.*)?$

Sample Input:
Hello
Hello blah
Hi
Hello //
Hello // blah blah
Hello //blah

Sample Output using egrep:
Hello
Hello //
Hello // blah blah
Hello //blah

最佳答案

这对于 egrep 来说非常简单:

egrep '^Hello(\s*\/\/.*)?$' input.txt

即:

  • ^ ... - 强制匹配从行首开始。
  • Hello - 绝对匹配所需的短语 Hello
  • (\s* ... ) - 允许可选的空格跟在 Hello 之后。
  • ( ...\/\/... ) - 匹配正斜杠,转义它们(因为某些 shell 会对您的正则表达式做一些有趣的事情)。
  • ( ... .*) - 斜杠后允许任何内容。
  • ( ... )? - 问号表示括号内的部分是可选的。
  • ... $ - 强制正则表达式仅在它消耗完行尾时才匹配。

您使用的是 grep 而不是 egrep。 Plain grep 使用更简单的正则表达式语法,不允许使用您可能喜欢使用的某些运算符。值得注意的是,在普通 grep 中,括号和 ? 只是普通字符,而不是用于分组的特殊元字符,因此普通 grep 正在搜索 literal () 在您的文件中。如有疑问,请选择 egrep

(是的,对于观众中的学究们来说,egrep 确实只是 grep -Egrep --extended-regexp 的替代名称,但它比其他两种“原生”形式更容易记住和键入 egrep。)

关于正则表达式:以特定事物结尾,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46269222/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com