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

时间:2018-04-10 17:09:30

标签: linux usb linux-device-driver udev

我正在尝试包含一个udev规则来创建一个自定义的/ dev / entry,具体取决于usb设备属性。我有两个不同的条形码扫描仪,它们将条码扫描器和条形码扫描器一词放入制造商的产品中。

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

ATTRS{manufacturer}=="(([bB]ar\ ?[Cc]ode\ ?)([Ss]can\ ?(ner)?))"

或者我应该:

ATTRS{manufacturer}=="\([Bb]ar\(\s\?\)[Cc]ode\s\?[Ss]can\)"

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

Bar code Scanner
barcode scanner
barcodescanner
Barcode Scanner
bar code scanner
bar code scan
Bar Code Scan
BarCode Scaner
barCode scanner

1 个答案:

答案 0 :(得分:5)

来自udev man page

  

它支持以下模式字符:

     
      
  • “*”匹配零个,一个或多个字符。
  •   
  • “?”匹配任何单个字符,但不匹配零字符。
  •   
  • “[]”匹配括号内指定的任何单个字符。例如,模式字符串“tty [SR]”将匹配“ttyS”或   “ttyR”。在这场比赛中还支持范围' - '   字符。例如,要匹配所有数字的范围,   将使用模式[0-9]。如果'['后面的第一个字符   是'!',任何未包含的字符都匹配。
  •   
  • “|”分隔其他模式。例如,模式字符串“abc | x *”将匹配“abc”或“x *”。
  •   

在您的情况下"[Bb]ar[Cc]ode [Ss]can*|[Bb]ar [Cc]ode [Ss]can*"应该有效。