![如何正确地将正则表达式写入 cmd 的 findstr?](https://linux22.com/image/1602025/%E5%A6%82%E4%BD%95%E6%AD%A3%E7%A1%AE%E5%9C%B0%E5%B0%86%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F%E5%86%99%E5%85%A5%20cmd%20%E7%9A%84%20findstr%EF%BC%9F.png)
我尝试在 Windows 中仅打印 UUID 并运行以下命令:
wmic csproduct get uuid | findstr /R “[a-zA-Z0-9]{5}-[a-zA-Z0-9]{5}-[a-zA-Z0-9]{5}-[a-zA-Z0-9]{5}”
上述命令返回空字符串。
如果我执行以下操作:
wmic csproduct get uuid
它将打印以下内容:
唯一唯一标识符
uuid-示例-9596-dj9v
我正在尝试仅打印最后一行。
答案1
据我所知,findstr
正则表达式非常基础,它不支持像这样的量词{5}
。
你必须写详尽地:
[a-zA-Z0-9][a-zA-Z0-9][a-zA-Z0-9][a-zA-Z0-9][a-zA-Z0-9]-[a-zA-Z0-9][a-zA-Z0-9][a-zA-Z0-9][a-zA-Z0-9][a-zA-Z0-9]-[a-zA-Z0-9][a-zA-Z0-9][a-zA-Z0-9][a-zA-Z0-9][a-zA-Z0-9]-[a-zA-Z0-9][a-zA-Z0-9][a-zA-Z0-9][a-zA-Z0-9][a-zA-Z0-9]
我建议使用单词边界:
\<[a-zA-Z0-9][a-zA-Z0-9][a-zA-Z0-9][a-zA-Z0-9][a-zA-Z0-9]-[a-zA-Z0-9][a-zA-Z0-9][a-zA-Z0-9][a-zA-Z0-9][a-zA-Z0-9]-[a-zA-Z0-9][a-zA-Z0-9][a-zA-Z0-9][a-zA-Z0-9][a-zA-Z0-9]-[a-zA-Z0-9][a-zA-Z0-9][a-zA-Z0-9][a-zA-Z0-9][a-zA-Z0-9]\>
您可以使用替代方案,请参阅:https://stackoverflow.com/q/87350/372239