udev规则吸引正则表达式接受

mee*_*ick 1 linux usb udev linux-device-driver

我试图包含一个udev规则来创建一个自定义/ dev /条目取决于USB设备属性.我有两个不同的条形码扫描仪,它们将条形码扫描仪和条形码扫描仪一词放入制造商的产品中.

所以我想知道我是否可以通过将正则表达式添加到ATTRS {manufacturer}来使其工作,如下所示:

ATTRS{manufacturer}=="(([bB]ar\ ?[Cc]ode\ ?)([Ss]can\ ?(ner)?))"
Run Code Online (Sandbox Code Playgroud)

或者我应该:

ATTRS{manufacturer}=="\([Bb]ar\(\s\?\)[Cc]ode\s\?[Ss]can\)"
Run Code Online (Sandbox Code Playgroud)

上面提到的正则表达式将接受以下变体:

Bar code Scanner
barcode scanner
barcodescanner
Barcode Scanner
bar code scanner
bar code scan
Bar Code Scan
BarCode Scaner
barCode scanner
Run Code Online (Sandbox Code Playgroud)

Zal*_*tik 5

来自udev手册页:

它支持以下模式字符:

  • "*"匹配零个,一个或多个字符.
  • "?" 匹配任何单个字符,但不匹配零个字符.
  • "[]"匹配括号内指定的任何单个字符.例如,模式字符串"tty [SR]"将匹配"ttyS"或"ttyR".此匹配中还支持范围为" - "字符.例如,要匹配所有数字的范围,将使用模式[0-9].如果'['之后的第一个字符是'!',则匹配任何未包含的字符.
  • "|" 分开替代模式.例如,模式字符串"abc | x*"将匹配"abc"或"x*".

在你的情况下"[Bb]ar[Cc]ode [Ss]can*|[Bb]ar [Cc]ode [Ss]can*"应该工作.