我需要搜索一堆文件,找出其中包含“tblPayment”或“tblInvoice”的内容。
我还想匹配任何名为“tblPaymentMethod”,“tblInvoiceItem”,“tblInvoicePayment”的表。
有谁能帮我写一个正则表达式吗?
再次感谢!
我需要搜索一堆文件,找出其中包含“tblPayment”或“tblInvoice”的内容。
我还想匹配任何名为“tblPaymentMethod”,“tblInvoiceItem”,“tblInvoicePayment”的表。
有谁能帮我写一个正则表达式吗?
再次感谢!
tbl(Invoice|Payment)+
如果您需要这种灵活性,它还将匹配没有表前缀的表。
编辑:有几种明确的方法可以做到这一点(即tblInvoice | tblPayment | ...
),但每次添加要匹配的新表时,您都必须修改正则表达式。 这可能是您想要的,但我想为您提供更灵活的内容,您不必经常进行编辑。
tblInvoicePayment
或者以后可能是tblInvoiceRandom
这样的表,这个方法也会处理好这个问题。 - Robert GreinertblInvoice
部分。在 OP 的情况下,命中部分匹配是有意义的,这样您就不必明确添加每个要匹配的表名。在其他情况下,您可能需要完全匹配(在这种情况下,我的正则表达式将无法工作)。 - Robert GreinertblPayment|tblInvoice|tblPaymentMethod|tblInvoiceItem|tblInvoicePayment
具体实现方式取决于您所使用的编程语言。
tbl(Payment(Method)?|Invoice(Item|Payment)?)
使用最短的方式可能比直接将一堆字符串进行文字比较要难以维护一些。
/tbl
((Payment(Method)?)
|
(Invoice(Item|Payment)?))
/x
将匹配您正在寻找的内容。
tbl(?:Invoice|Payment)\w*
(?:发票|付款)是一个非捕获组(在这种情况下比捕获组更有效)。然后\w*将选择性地匹配紧随其后的字母数字字符。
/tblPayment/
,/tblInvoice/
。认真的,就像这样。 - SilentGhost