所以我不确定我是否理解这是如何运作的
a simple explanation to how they work
就是全部。我可能已经离开了。的 A pure regex solution is required, and I don't know if this is possible
即可。如果是的话,解决方案也会很棒,但是朝着正确的方向推进会对我的学习过程有益^_^
这就是我认为我的正则表达式引擎中内置的if/then/else
选项格式化的方式:
?(condition)if regex|else regex
我希望它只在此字符串存在于javascript的某个部分时才从特定位置捕获字符串。因为这是我认为它经过大量研究后的工作方式,所以我尝试了这些代码的一些变体,但它们都是这样的。
((?^view_large$)Tables-137(.*?)search.htm)
Also of relevance: I'm using an java based app that has regex searches which pull the data I need so I cannot write an if statement in java which would be my preferred method.
以这种方式做这件事很痛苦,但此刻我别无选择。我正在努力让他们允许java代码功能而不是纯正则表达式以获得更多功能。
总而言之, is there even a if/then option in regex and if so how is it formatted for what I'm trying to accomplish?
编辑:我想成为“if condition”的字符串是这样的:如果view_large
字符串存在且不为null,则捕获在其中捕获的确切字符串500/
我使用的所有组:(.*?)
答案 0 :(得分:9)
Java regexp中没有条件,但您可以通过编写包含互斥look-behind constructs的两个表达式来模拟它们,如下所示:
((?<=if )then)|((?<!if )end)
此表达式将匹配“then”,前面是"if "
;如果不前面有"end"
"if "
答案 1 :(得分:2)
The Javadoc for java.util.regex.Pattern
在其“此类不支持的Perl构造”列表中提及:
- 条件结构
(?(condition)X)
和(?(condition)X|Y)
。
所以,没有骰子。但是你应该通过Javadoc查看是否可以通过使用支持支持的正则表达式功能来实现所需。 (或者,如果您发布一些更详细的示例,我们可以尝试提供帮助。)
答案 2 :(得分:1)
尝试外观断言。
例如,假设您只想在某处有4位数的数字时才捕获FOOBAR:
(?=.*\d{4}).*(FOOBAR)