我正在处理一个简单的问题。
我有一个Cognos报告,在文件夹中留下两个文件,之后接口必须根据文件名选择其中一个文件才能开始运行。
报告进程要求用户为报告设置名称。对于前者如果我选择名称PaymentJournal06.09
,则会创建以下文件:
PaymentJournal 06.09-en-us-xml_desc.xml
PaymentJournal 06.09-en-us.xml
我需要一个正则表达式来仅获取第二个文件。我尝试使用PaymentJournal*-en-us.xml
,但它不起作用。
答案 0 :(得分:6)
使用正则表达式*不是您习惯使用的通配符,而是一个意义为零或更多的量词。所以在你的例子中:
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
匹配数字,\.
匹配句点(。)
答案 1 :(得分:4)
你非常接近。 .
是正则表达式中的一个特殊字符,它匹配任何一个字符。因此,如果您拥有*
通配符,则需要.*
或.+
。第一个匹配任何字符的0或更多,第二个匹配1或更多,但两者都适用于这种情况。然后,您使用的.
需要转发,例如\.
,因为您确实希望在那里匹配.
。把它们放在一起:
PaymentJournal.*-en-us\.xml