Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 在sed中,如何表示;字母数字或“或-”;_Regex_Linux_Bash_Shell_Sed - Fatal编程技术网

Regex 在sed中,如何表示;字母数字或“或-”;

Regex 在sed中,如何表示;字母数字或“或-”;,regex,linux,bash,shell,sed,Regex,Linux,Bash,Shell,Sed,尝试 在正则表达式中表示它的正确方法是什么 似乎[a-zA-Z0-9-]适用于字母数字或破折号。但当我添加另一个下划线时,它会断开。这将是这个字符类: [a-zA-Z0-9-_] [a-zA-Z0-0\-\_] [[[:alnum:]]-_] ... 这意味着允许以下情况之一: [[:alnum:]_-] 将连字符保持在字符类中的第一个或最后一个位置以避免转义是很重要的。所有这些变体都可以工作: 1. Alpha numeric 1. Underscore 1. Hyphen 连字符必须在

尝试

在正则表达式中表示它的正确方法是什么


似乎[a-zA-Z0-9-]适用于字母数字或破折号。但当我添加另一个下划线时,它会断开。

这将是这个字符类:

[a-zA-Z0-9-_]
[a-zA-Z0-0\-\_]
[[[:alnum:]]-_]
...
这意味着允许以下情况之一:

[[:alnum:]_-]

将连字符保持在字符类中的第一个或最后一个位置以避免转义是很重要的。

所有这些变体都可以工作:

1. Alpha numeric
1. Underscore
1. Hyphen

连字符必须在一端。如果在结尾可以转义或不转义,如果在开头必须取消转义。下划线几乎可以在任何地方,只要它不在一个范围的中间,并且不需要被逃脱。

详细说明,如果一个未逃逸连字符出现在任何地方,除了第一个或最后一个位置,正则表达式处理器认为您需要的是一个范围而不是一个单独的字符。为了获取文件sed'/^[^-[:alnum:]]/d'文件的字母数字字符,出于某种原因,
[[:alnum:].-]
也以某种方式匹配正斜杠,然后再加上一个字母。意思是,它以某种方式匹配如下内容:
abcdef/somethingelse
as
abcdef/s
不匹配
/
。这可能是因为缺少锚。始终将连字符放在集合中字符列表的最后。否则,它将被解释为范围规范的一部分。
[a-zA-Z0-9_\-]
[a-zA-Z0-9_-]
[-_a-zA-Z0-9]
[-a-z_A-Z0-9]
[-a-zA-Z_0-9]
[-a-zA-Z0-9_]
...