正则表达式匹配特殊字符的精确出现

标签 regex linux grep

文件:

cat test.txt

100 ***

10 ** // target

查询:

grep -E '\*{2}' test.txt

100 ***

10 ** 

{m} 不是用来精确匹配号码的吗?

如何获取恰好出现 2 次的 *

最佳答案

你可以使用

grep -E '(^|[^*])\*{2}($|[^*])' test.txt

参见 online grep demo :

test="100 ***
10 ** // target"
grep -E '(^|[^*])\*{2}($|[^*])' <<< "$test"
# => 10 ** // target

详情

  • (^|[^*]) - 字符串或除 *
  • 之外的任何字符的开头
  • \*{2} - 两个星号
  • ($|[^*]) - 字符串结尾或除 * 之外的任何字符。

空白边界的变化

如果您只需要匹配空格之间的“单词”,请使用

grep -E '(^|[[:space:]])\*{2}($|[[:space:]])' test.txt

关于正则表达式匹配特殊字符的精确出现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56622261/

相关文章:

linux - Linux 中的 AF_NETLINK(NETLINK_ROUTE) 和 AF_ROUTE 套接字有什么区别?

linux - 打印文件中不以散列开头的所有行,并按特定列过滤

linux - 如何 'grep'连续流?

bash - grep 数字范围

python - 如何使用 Python 在数据框中查找字符串匹配项

jquery - 如何使用正则表达式验证整数和小数值?

R "eats"字符串中的正则表达式

javascript - 避免 HTML 标记中灾难性的回溯

java - 转换为PDF/A并检查Linux下的合规性

linux - 在 linux 中搜索和替换一行?