Regex 匹配文件名的正则表达式

Regex 匹配文件名的正则表达式,regex,Regex,我想我正在处理一个简单的问题 我有一个Cognos报告,在一个文件夹中留下两个文件,然后一个接口必须根据文件名选择其中一个文件才能开始运行 报告进程要求用户为报告设置名称。例如,如果我选择名称PaymentJournal06.09,它将创建以下文件: PaymentJournal 06.09-en-us-xml_desc.xml PaymentJournal 06.09-en-us.xml 我需要一个正则表达式来只提取第二个文件。我尝试使用PaymentJournal*-en-us.xml,但

我想我正在处理一个简单的问题

我有一个Cognos报告,在一个文件夹中留下两个文件,然后一个接口必须根据文件名选择其中一个文件才能开始运行

报告进程要求用户为报告设置名称。例如,如果我选择名称PaymentJournal06.09,它将创建以下文件:

PaymentJournal 06.09-en-us-xml_desc.xml
PaymentJournal 06.09-en-us.xml

我需要一个正则表达式来只提取第二个文件。我尝试使用PaymentJournal*-en-us.xml,但它不起作用。

对于正则表达式,*不是您习惯使用的通配符,而是一个表示零或更多的量词。在你的例子中:

PaymentJournal*-en-us.xml
l*表示零个或多个l字符,匹配:

PaymentJourna-en-us.xml
PaymentJournal-en-us.xml
PaymentJournall-en-us.xml
PaymentJournallll-en-us.xml
...
你需要使用。匹配任何内容的字符:

PaymentJournal.*-en-us.xml
或者你可以更具体一些:

PaymentJournal \d\d\.\d\d-en-us.xml

其中\d与数字和\匹配。匹配句点。

对于正则表达式,*不像您习惯的那样是通配符,而是一个表示零或更多的量词。在你的例子中:

PaymentJournal*-en-us.xml
l*表示零个或多个l字符,匹配:

PaymentJourna-en-us.xml
PaymentJournal-en-us.xml
PaymentJournall-en-us.xml
PaymentJournallll-en-us.xml
...
你需要使用。匹配任何内容的字符:

PaymentJournal.*-en-us.xml
或者你可以更具体一些:

PaymentJournal \d\d\.\d\d-en-us.xml
其中\d与数字和\匹配。匹配一个句号。

你很接近。这个是正则表达式中与任何一个字符匹配的特殊字符。所以,如果你有*通配符,你需要一个。*或一个.+来代替。第一个匹配任何字符中的0个或多个,第二个匹配1个或多个,但两者都适用于这种情况。然后呢,。您过去需要转义,比如\,因为您实际上想要匹配一个。那里总而言之:

PaymentJournal.*-en us\.xml

您非常接近。这个是正则表达式中与任何一个字符匹配的特殊字符。所以,如果你有*通配符,你需要一个。*或一个.+来代替。第一个匹配任何字符中的0个或多个,第二个匹配1个或多个,但两者都适用于这种情况。然后呢,。您过去需要转义,比如\,因为您实际上想要匹配一个。那里总而言之:


PaymentJournal.*-en us\.xml确实如此。如果您用来创建正则表达式的任何东西都支持这些字符,那么您可能还希望向正则表达式中添加字符串开头和字符串结尾字符。如果用于创建正则表达式的任何东西都支持这些字符,那么您可能还希望向正则表达式中添加字符串开头和字符串结尾字符。