REGEX - 负前瞻多行检查

时间:2018-02-02 11:53:42

标签: regex intellij-idea regex-negation

我需要有关正则表达式的帮助,以查找组件中不包含&#34; maxlength&#34;的所有<lightning:input/>字段。属性。

输入示例:

   <lightning:input value="{!v.value}" 
                    aura:id="field" name="name" 
                    maxlength="50" 
                    label="label" 
                    required="true" 
                    />

我已经尝试了这个(<lightning:input)(?!.*(maxlength)),但它只检查第一行输入(不包括新行)。我需要在IntelliJ IDEA搜索中使用它。

1 个答案:

答案 0 :(得分:1)

前瞻中使用的.*构造只允许您在一行上检查后续子模式。但是,您可能不会在此处使用(?s) DOTALL修饰符来允许.跨行匹配,因为*是贪婪的,并且会在文档中尽可能地匹配{{1}另一个节点文本中的子字符串。

因此,最安全的正则表达式方法是尽可能少地使用maxlength构造以匹配[^<]*?以外的任何0 +字符(包括换行符):

<

注意我添加了<lightning:input(?![^<]*?maxlength=) 以确保=子字符串后跟maxlength。要将=作为整个字词进行匹配,请在其前面添加maxlength(字边界)或甚至\b(空格)。