不以序列开头的字符串的正则表达式


195

我正在使用此程序处理一堆表,但是我需要忽略那些以标签“ tbd_”开头的表。到目前为止,我有类似[^ tbd_]的东西,但是根本不匹配那些字符。


SchemaSpy如何工作?您是通过表名称列表还是正则表达式进行匹配?
Mark Biek

我传递了一个正则表达式(它是-i标志),它将导入匹配项,或者无论如何它表示=)
echoblaze

4
@echoblaze:如果要处理XML,为什么不使用XML解析器?这将比使用正则表达式容易得多。
浓汤

Answers:


332

您可以使用否定的前瞻断言:

^(?!tbd_).+

或否定的后向断言:

(^.{1,3}$|^.{4}(?<!tbd_).*)

或只是简单的旧字符集和替换:

^([^t]|t($|[^b]|b($|[^d]|d($|[^_])))).*

6
是否仅限于任何特定的正则表达式引擎?
Mark Biek

1
我之所以这么问,是因为在我的测试中,第二个似乎仍然与tbd_相匹配。第一个很棒。
Mark Biek

5
看一下regular-expressions.info的风味比较:regular-expressions.info/refflavors.html
浓汤

1
@Gumbo-那不应该以。*而不是。+结尾吗?tbd_的字符串也以该字符串开头...因此,根据定义,不需要其他任何字符吗?否则,很好的例子。它确实需要支持正视功能的正则表达式引擎。
09年

1
@balabaster:我不认为他正在寻找空字符串。但即便如此,他可以很容易地改变通过更换.+通过.*
浓汤
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.