正则表达式从字符串中获取子字符串
Regex grab a substring from a string
任何熟悉如何使用正则表达式的人都可以抓住以下表达式:
Random1 `json:"random1"`
Random2 `json:"random2"`
Random3 `json:"random3"`
期望的输出:
random1
random2
random3
到目前为止我尝试过的:
试一试:
grep -o '(\".*?\")' example1.file
尝试两个:
grep -o '\"*\"' example1.file
没有返回任何内容
这 returns 一切,只需要子字符串:
尝试 3
grep -E "\"(.*)\"" example1.file
预期输出:
random1
random2
random3
您需要将 -P
与 lookarounds 一起使用,这样引号就不会包含在匹配项中。
grep -o -P '(?<").*(?=")' example1.file
这需要 GNU grep
才能获得 PCRE 的 -P
选项。
使用 GNU grep 和 Perl-compatible 正则表达式:
grep -Po '(?<=").*(?=")' file
输出:
random1
random2
random3
使用sed
:
sed -E 's/^.*"(.*)"`$|.*//g' example1.file
这(|.*
部分)也会清除不匹配的行。然后可以使用 ... | grep .
轻松过滤掉
任何熟悉如何使用正则表达式的人都可以抓住以下表达式:
Random1 `json:"random1"`
Random2 `json:"random2"`
Random3 `json:"random3"`
期望的输出:
random1
random2
random3
到目前为止我尝试过的:
试一试:
grep -o '(\".*?\")' example1.file
尝试两个:
grep -o '\"*\"' example1.file
没有返回任何内容
这 returns 一切,只需要子字符串:
尝试 3
grep -E "\"(.*)\"" example1.file
预期输出:
random1
random2
random3
您需要将 -P
与 lookarounds 一起使用,这样引号就不会包含在匹配项中。
grep -o -P '(?<").*(?=")' example1.file
这需要 GNU grep
才能获得 PCRE 的 -P
选项。
使用 GNU grep 和 Perl-compatible 正则表达式:
grep -Po '(?<=").*(?=")' file
输出:
random1 random2 random3
使用sed
:
sed -E 's/^.*"(.*)"`$|.*//g' example1.file
这(|.*
部分)也会清除不匹配的行。然后可以使用 ... | grep .