Regex 如何在bash中匹配较长字符串中的特定模式?
我有几个文件:Regex 如何在bash中匹配较长字符串中的特定模式?,regex,bash,Regex,Bash,我有几个文件: java-opentimelineio-0.14.0-beta-1-sources.jar java-opentimelineio-0.14.0-beta-1.jar java-opentimelineio-0.14.0.jar 我正在尝试使用正则表达式匹配文件名,如下所示: find . -type f -name "[[:alnum:]]*[.][0-9]*(-beta-)?[0-9]*.jar" 我希望正则表达式只匹配以下内容: java-opent
java-opentimelineio-0.14.0-beta-1-sources.jar
java-opentimelineio-0.14.0-beta-1.jar
java-opentimelineio-0.14.0.jar
我正在尝试使用正则表达式匹配文件名,如下所示:
find . -type f -name "[[:alnum:]]*[.][0-9]*(-beta-)?[0-9]*.jar"
我希望正则表达式只匹配以下内容:
java-opentimelineio-0.14.0-beta-1.jar
java-opentimelineio-0.14.0.jar
但我没有找到匹配的。据我所知,任何字符后面的*
将匹配该字符的零次或多次出现,而?
将匹配该字符的零次或一次出现。我哪里出错了?您可以使用
>查找-类型f-regextype posix egrep-regex'.*/[^/]+-[0-9]+\[0-9]+\[0-9]+(-beta-[0-9]+)?\.jar'
./java-opentimelineio-0.14.0-beta-1.jar
./java-opentimelineio-0.14.0.jar
请记住,正则表达式可以与-regex
选项一起使用,并且它必须匹配整个路径
-regextype posix egrep
选项允许使用“更简单”(意味着涉及的转义更少)的posix ERE引擎
正则表达式详细信息:
-任何零个或多个字符*
-a/
字符/
-一个或多个字符,而不是[^/]+
/
-连字符-
-“版本”式模式:一个或多个数字,[0-9]+\.[0-9]+\.[0-9]+
,一个或多个数字,
,一个或多个数字
-可选的(-beta-[0-9]+)?
字符串,然后是一个或多个数字-beta-
-一个\.jar
字符串.jar
>查找-类型f-regextype posix egrep-regex'.*/[^/]+-[0-9]+\[0-9]+\[0-9]+(-beta-[0-9]+)?\.jar'
./java-opentimelineio-0.14.0-beta-1.jar
./java-opentimelineio-0.14.0.jar
请记住,正则表达式可以与-regex
选项一起使用,并且它必须匹配整个路径
-regextype posix egrep
选项允许使用“更简单”(意味着涉及的转义更少)的posix ERE引擎
正则表达式详细信息:
-任何零个或多个字符*
-a/
字符/
-一个或多个字符,而不是[^/]+
/
-连字符-
-“版本”式模式:一个或多个数字,[0-9]+\.[0-9]+\.[0-9]+
,一个或多个数字,
,一个或多个数字
-可选的(-beta-[0-9]+)?
字符串,然后是一个或多个数字-beta-
-一个\.jar
字符串.jar
-name
而不是-regex
这不仅仅是关于find
如何工作,regex也需要修复。你应该使用-name
而不是-regex
这不仅仅是关于find
如何工作,regex也需要修复。