使用正则表达式匹配“小于”或“小于或等于”符号

时间:2012-11-24 17:49:40

标签: regex sed

我无法在sed中将此模式< =与正则表达式匹配。我真正需要的是[< |< =]或类型匹配。我可以使用。*,但这偶尔会产生其他问题。示例行将是:

for (int j = 0 j < nspec ++j)

for (int j = jmin j <= jmax ++j)

以下(部分)命令为例。

sed -n '/for (int *\([[:graph:]]\) *= *\([[:graph:]]\) *\1 *</p' filename

会找到第一个模式,但是

sed -n '/for (int *\([[:graph:]]\) *= *\([[:graph:]]\) *\1 *<=/p' filename

找不到第二个。

任何帮助都将不胜感激。

2 个答案:

答案 0 :(得分:2)

字符类仅匹配一个字符。 (这意味着|被解释为文字管道字符,而不是交替)

您需要将[]替换为()

(<|<=)或者:<=?

答案 1 :(得分:1)

在RegEx中,?生成上一个元素optional。所以<=?的意思是“给我少于,如果你拥有它就等于你。”

我不确定?是否需要在sed中进行转义,所以请尝试两种方式,并在发现时告诉我/更新: - )