我在这里回答了一个代码高尔夫问题:
https://codegolf.stackexchange.com/q/89400/57100
我的回答:
https://codegolf.stackexchange.com/a/89421/57100
我得到了一个评论,有一个消化,以改善我的答案,但我无法弄清楚它是如何工作的。
难题是输入和输出源代码中的字符。
建议是:grep -o '[] [|\'\'greposrtu-]|sort -u
我得到-o
,sort -u
,第一个]
没有关闭括号表达式,但我对grep的其余参数有点困惑。据我所知,第一个'
打开字符串,但最后没有一个关闭它。此外,在括号表达式中,第一个\'
似乎关闭了字符串(如果我同时取出\'
s等待更多输入),还匹配\
以下是其他一些最小的例子:
1. grep -o '[]']
匹配]
但不匹配'
2. grep -o '[][\']
匹配\
,[
和]
,但不匹配'
3. grep -o '[][\'\']
匹配'
,[
,]
和\
4. grep -o '[']
发出错误:grep: Unmatched [ or [^
关于这些例子的问题:
1.为什么'
关闭字符串,但]
在它之后并关闭字符串中的括号表达式?
2.为什么\'
似乎匹配\
?
3.为什么第二次\'
匹配'
而不是第一次匹配\
?{
4.为什么'[]']
有效,但'[']
没有?
答案 0 :(得分:2)
在单引号中,\
没有特殊含义。因此,grep
的参数包含
[][|\
\'
即单引号grepostru-]
作为文字字符,]
如果不是grep
中的第一个字符,则[...]
没有特殊含义,bash
没有特殊含义{1}}。