完全匹配,除了前导和尾随特殊字符(包括空格)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了完全匹配,除了前导和尾随特殊字符(包括空格)相关的知识,希望对你有一定的参考价值。

我试图让awk搜索完全匹配,除了前导和尾随特殊字符和空格。

EG

寻找'你好':

Matches:
$%#@!@@[Hello ^%.!
hello world

但WONT匹配:

helloworld

我有部分匹配工作如下:

(tolower($0) ~ /hello/)

但无法弄清楚如何做特殊字符。

“特殊”字符是指非字母/数字字符:

!@#$%^&*()-[]:"><'.,/?|~`

答案

如果你相信awk的词边界

$ awk 'tolower($0) ~ /yhelloy/' file

$%#@!@@[Hello ^%.!
hello world

但会过滤掉“helloworld”

我认为y只有gawk支持,否则你可以使用<>左右边界......

另一答案
$ cat ip.txt
helloworld
hello_world
$%#@!@@[Hello ^%.!
hello world

$ grep -iE '(^|[^[:alnum:]])hello([^[:alnum:]]|$)' ip.txt
hello_world
$%#@!@@[Hello ^%.!
hello world
  • -iE用于不区分大小写的匹配并使用ERE
  • (^|[^[:alnum:]])行或非字母/数字字符的开头
  • hello字符串匹配
  • ([^[:alnum:]]|$)后跟非字母/数字字符或行尾

如果你包括_以及一个有效的角色,那么

$ grep -iw 'hello' ip.txt
$%#@!@@[Hello ^%.!
hello world

以上是关于完全匹配,除了前导和尾随特殊字符(包括空格)的主要内容,如果未能解决你的问题,请参考以下文章

如何删除前导和尾随的空格以及字符串中的多个空格? [复制]

将整个单词与字符串中的前导或尾随特殊符号(如美元)匹配

限制 XSD 中的字符串,使它们没有前导或尾随空格,并且只包含字母数字、连字符和下划线?

正则表达式匹配标签内容,同时省略前导和尾随空格

js trim()方法

从 Java 字符串中去除前导和尾随空格