Bash:在字符串中搜索特定的特殊字符

时间:2013-02-27 12:43:48

标签: shell

我想检查我的字符串中是否存在特殊字符*。我已经找了一些例子,但所有提到的都是关于[^[A..za..z0..9]]..但是这会给你所有字符串中的特殊字符,但不是你正在寻找的字符。 因此,如果我的字符串包含* or [:space:]*或后跟* (and not /* or */)的任何字符,则结果应为true,否则为false。

Ex: 
Uint_8* A
Uint_16 * A
ABC * C    /*blablabla*/
ABC* C .. Should return true  
but 
Uint_8 A       /*blabla*/ ..... should return false

你能帮帮我吗?

1 个答案:

答案 0 :(得分:2)

你需要的正则表达式是[^/]\*[^/]

例如,如果您的字符串存储在变量中:

$ var='Uint_8 A       /*blabla*/'
$ [[ $var =~ [^/]\*[^/] ]] && echo true || echo false
false

来自文件的grep匹配:

$ grep "[^/]\*[^/]" file
Uint_8* A
Uint_16 * A
ABC * C    /*blablabla*/
ABC* C .. Should return true