我已经使用这个正则表达式测试器来检查我的正则表达式是否有效:http://regex101.com/
The RegEx I'm using is: \s?(?<='username' => ').*[^']
The string I'm looking at is: 'username' => 'test12345'
The substring I want to get is: test12345
当我在RegEx-tester中输入RegEx时,它显示子字符串被捕获。
现在我想使用正则表达式从文件中 grep 子字符串。到目前为止,我对这个说法没有运气:
grep "\s?(?<='username' => ').*[^']" ./file_to_search
grep 不会抛出任何错误。它根本不会像找不到匹配项时那样给出结果。
我尝试过用反斜杠来转义grep语句中的撇号,但是没有用。
非常感谢任何帮助。
要使查找工作,您需要启用-P
perl regexp参数,还需要在grep上启用-o
only matching参数,以便只打印匹配项,而不是打印整行。
grep -oP "\s?(?<='username' => ')[^']*" file
或
grep -oP "'username' => '\K[^']*" file