使用带有正则表达式的findstr来搜索CSV

时间:2011-01-26 12:01:02

标签: regex csv findstr

我想知道是否可以使用findstr在CSV中搜索与此正则表达式匹配的任何内容

^([BPXT][0-9]{6})|([a-zA-Z][a-zA-z][0-9][0-9](adm)?)$

2 个答案:

答案 0 :(得分:1)

我不知道你说的是哪种语言,但你的正则表达式存在一个明显的问题:^$锚点要求它匹配整个字符串,而你似乎计划匹配CSV文件中的各个条目。

因此,如果你的正则表达式引擎支持它们,你应该使用单词边界锚点:

\b(?:([BPXT][0-9]{6})|([a-zA-Z]{2}[0-9]{2}(adm)?))\b

我还在交替中添加了另一个非捕获组。在正则表达式中,字符串开头和结尾处的锚点将成为交替的一部分,这可能不是预期的。你是否真的需要所有其他括号取决于你将如何处理比赛。

答案 1 :(得分:0)

不,不可能使用findstr来搜索匹配的子字符串,尤其是与您提供的复杂表达式匹配的子字符串。

findstr是Windows内置的。

findstr /?显示了它可以使用的正则表达式的子集:

Regular expression quick reference:
  .        Wildcard: any character
  *        Repeat: zero or more occurrences of previous character or class
  ^        Line position: beginning of line
  $        Line position: end of line
  [class]  Character class: any one character in set
  [^class] Inverse class: any one character not in set
  [x-y]    Range: any characters within the specified range
  \x       Escape: literal use of metacharacter x
  \<xyz    Word position: beginning of word
  xyz\>    Word position: end of word

这意味着你的大部分表达都在窗外。

此外,findstr不能将其输出限制为仅匹配的表达式;它只标识包含匹配的行。

完全不适合所描述的任务。