简单的正则表达式问题

时间:2010-05-12 17:10:19

标签: regex

我需要在一堆文件中搜索包含“tblPayment”或“tblInvoice”的任何内容

我还想匹配任何名为“tblPaymentMethod”,“tblInvoiceItem”,“tblInvoicePayment”的表

有人关心如何为此编写正则表达式?

再次感谢!

6 个答案:

答案 0 :(得分:4)

tbl(Invoice|Payment)+
如果您需要这种灵活性,

这也将匹配没有表前缀的表。

编辑:有多种方法可以明确地执行此操作(例如tblInvoice|tblPayment|...),但每次添加要匹配的新表时,都必须修改RegEx。这可能就是你想要的,但我想让你更灵活一点,不必经常编辑。

答案 1 :(得分:0)

你需要这个正则表达式。

tblPayment|tblInvoice|tblPaymentMethod|tblInvoiceItem|tblInvoicePayment

实施将取决于您正在实施的语言。

答案 2 :(得分:0)

tbl(Payment(Method)?|Invoice(Item|Payment)?)

是最短的,但可能比简单地用字符串列表进行文字文本比较更难维护。

答案 3 :(得分:0)

在Perl RE语法中:

/tbl
 ((Payment(Method)?)
 |
 (Invoice(Item|Payment)?))
/x

将符合您的要求。

答案 4 :(得分:0)

在python中你可以使用这样的东西:     “TBL(发票|付款)?+”

答案 5 :(得分:0)

如果你想匹配任何以tblInvoice或tblPayment开头的表名,那么这样就可以了:

tbl(?:Invoice|Payment)\w*

(?:Invoice | Payment)是一个非捕获组(在这种情况下比捕获组更有效)。然后\ w *将可选地匹配紧随其后的字母数字字符。