如何正确地将正则表达式写入 cmd 的 findstr?

如何正确地将正则表达式写入 cmd 的 findstr?

我尝试在 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

相关内容