在下次搜索期间以正则表达式模式向后移动

时间:2017-03-09 19:26:16

标签: python regex string regular-language

我有以下模式的数据:

abc@1.0 name='abc'
abc@1.0 dep= {
"this",
"that",
}
abc@1.0 someInfo = "blahblah"
abc@2.0 name='abc'
abc@2.0 dep= {
"this",
"that",
}
abc@2.0 someInfo = "blahblah"
abc@3.0 name='abc'
abc@3.0 dep= {
"this",
"that",
}
abc@3.0 someInfo = "blahblah"

目标是查找每个组件@版本的所有记录(例如abc@1.0)。我找到了解决这个问题的多种方法,它们运行正常。但是,在此过程中,我无法使用一个特定的正则表达式逻辑解决此问题。

以下是我的尝试:

(1)删除所有换行符

(2)正则表达式(abc@.+?)(abc@|$)

问题是这只会得到备用记录,因为我们在正则表达式模式中使用了下一个'abc @'。

我正在尝试在执行下一个正则表达式搜索之前找回一种在字符串中移回的方法。即我想让所有记录不仅替代。

请注意,我不是在寻找解决方案 - 我已经解决了这个问题。我想知道在执行下一个正则表达式搜索之前我们怎样才能在字符串中移回。

修改

感谢@sln,Regex Pattern我一直在寻找:(?s)abc@(?:(?!abc@).)*

1 个答案:

答案 0 :(得分:0)

虽然你说过,你已经有了解决方案,但这就是我提出的解决方案。一般情况下,您只能使用backtracking control verb向后搜索,但此处并不需要这样做。

<小时/> 您有两个可能的值星座,一个带有PreparedStatement,一个带有private final String idStarsSQL = "select * from `stars` where id_num is not ?"; ... preparedStatement = (PreparedStatement) connection.prepareStatement(idStarsSQL); preparedStatement.setString(1, NULL); set = preparedStatement.executeQuery(); ,而后者包含其他几个值。此外,您只想拥有特定针的值。请查看此代码(demo on ideone.comregex part on regex101.com

"..."