Regular expression for a string that does not start with a sequence
我正在使用这个程序处理许多表,但是我需要忽略那些以标签"tbd_uuu"开头的表。到目前为止,我有一些类似于[^tbd_uu]的东西,但这与那些字符不匹配。
- SchemaSpy如何工作?您是给它传递一个表名列表,还是传递一个regex,它正在进行匹配?
- 我正在传递一个regex(它是-i标志),它将导入匹配项,或者它在任何情况下都表示为=)
- @EchoBlaze:如果您正在处理XML,为什么不使用XML解析器?这比使用正则表达式容易得多。
您可以使用否定的前瞻性断言:
或是否定的背后论断:
1
| (^.{1,3}$|^.{4}(?<!tbd_).*) |
号
或者只是简单的旧字符集和替换:
1
| ^([^t]|t($|[^b]|b($|[^d]|d($|[^_])))).* |
- 这是否仅限于任何特定的regex引擎?
- 我只是问,因为在我的测试中,第二个似乎仍然符合tbd_u。不过,第一个很好。
- 看一下正则表达式。信息的风格比较:regular-expressions.info/refflavors.html
- 刚刚修复了第二个regex。
- @秋葵汤-不应该结束吗?*而不是。+?一个字符串是tbd_uu,也以这个开头…因此,根据定义,后面不需要跟任何其他字符?否则,就是个好例子。它确实需要一个支持lookaround的regex引擎。
- @巴拉巴斯特:我不认为他在找空线。但如果是这样,他可以很容易地用.*代替.+。
- 不寻找空字符串,谢谢您的帮助!出于某种原因,它不能与我的regex检查器一起工作:bastian bergerhoff.com/eclipse/features/web/quickrex/toc.htm&zwnj;&误8203;l,但我将完成XML脚本,并了解如何进行。
- 没关系,看起来第一个很管用,谢谢!
- 一点错别字:第二个是否定的背后断言。
- 我对使用egrep、python的re以及一些在线regex解析器(即gskinner)的第一个示例有异议。这看起来不像是一个毫无前例的展望。还有人看到这个问题吗?
- 实际上,在玩了更多的游戏之后,看起来只有白鹭不喜欢示例1。我可以使用python的re或gskinner来实现这一点,只要前瞻性不是模式中唯一匹配的字符串(即,这不起作用:'^(!?somestring)",但它是:'^(?!somestring)。+')。
- 这在Visual Studio 2015的"文件中查找"中有效。这个表达式既使用否定的前瞻性,又使用否定的后视来查找所有以"doi"开头的C++标识符,但不以"dothMoad"开头,并且不以"DESC"或"MSG"结尾:"doz(?)?!模式)(w+[w-[0-9]]w*(?<!desc msg))"