我有两个正则表达式值,我一直试图将它们组合成一个单独的语句但是它无法正常工作。我需要能够显示包含注释的行或以空格开头,然后才能显示注释。
即。
$page_name = "workers";
echo ($page_name != "home" ? "home" : null);
我一直在尝试使用|声明然而它没有用。
是否可以将它们合并为一个或者我需要单独运行它们。
由于
答案 0 :(得分:1)
这应涵盖两种情况
/^\s*\/\*.*/
答案 1 :(得分:1)
您可以尝试:
/^[ ]*(\/\*.*)$/
上面的正则表达式将匹配任何带注释的行,可以以空格开头,并将行捕获到一个组。查看Regex Demo
正则表达式解释
/^[ ]*(\/\*.*)$/
^ assert position at start of a line
[ ]* match a single character present in the list below
Quantifier: * Between zero and unlimited times, as many times as possible, giving back as needed [greedy]
the literal character
1st Capturing group (\/\*.*)
\/ matches the character / literally
\* matches the character * literally
.* matches any character (except newline)
Quantifier: * Between zero and unlimited times, as many times as possible, giving back as needed [greedy]
$ assert position at end of a line
答案 2 :(得分:1)
正如其他答案所示,通常可以找到一般的表达式,以匹配原始表达式匹配的所有内容。事实上,这总是可行的,因为你总是可以组合两个这样的表达式:
(regex_1|regex_2|...|regex_n)
(根据您使用的方言,您可能必须使用反斜杠。)但是,sed
程序可能包含多个语句,因此您的示例可以简单地重写为:
sed -n "/\(^[/*]\).*\([*/]$\)/p /^\s/p" testfile
答案 3 :(得分:1)
您可以使用grep:
grep "^ */\*" testfile
^ =行的开头 First *重复该空间0次或更多次 第二颗星被逃脱,所以这是一个真实的。