Regex 查找关键短语之间的文本
我有一个变量,其中包含一些文本:Regex 查找关键短语之间的文本,regex,coldfusion,Regex,Coldfusion,我有一个变量,其中包含一些文本: <cfsavecontent variable="foo"> element.password_input= <div class="holder"> <label for="$${input_id}" > $${label_text}</label> <input name="$${input_name}" id="$${input_id}" value="$${input_value}" type="pa
<cfsavecontent variable="foo">
element.password_input=
<div class="holder">
<label for="$${input_id}" > $${label_text}</label>
<input name="$${input_name}" id="$${input_id}" value="$${input_value}" type="password" />
</div>
# END element.password_input
element.text_input=
<div class="ctrlHolder">
<label for="$${element_id}" > $${element_label_text}</label>
<input name="$${element_name}" id="$${element_id}"
value="$${element_value}" type="text"
class="textInput" />
</div>
# END element.text_input
</cfsavecontent>
但它只给了我这一部分:
element.text_input=
element.password_input=
任何帮助都将不胜感激。您当前的问题是默认情况下。不包括换行符-您需要在正则表达式中使用标志?s才能执行此操作 然而,仅仅启用该标志仍然不会导致您当前的正则表达式执行您期望它执行的操作 更好的正则表达式是:
(element\.\w+)=(?:[^##]+|##(?! END \1))+(?=## END \1)
然后执行ListFirstmatch[i]、'='和ListRestmatch[i]、'='以获取名称和值。“重赛”不会返回捕获的组
显然,上面的s是加倍的,以逃避CF
解析的上述正则表达式是:
(element\.\w+)=
匹配元素。和任何字母数字,将其放入捕获组1,然后匹配=字符
匹配任意数量的非散列字符,或使用负前瞻性匹配未后跟结束标记的散列?!。。。并引用捕获组1\1,使用非捕获组重复尽可能多的次数+:
向前看?=。。。确认变量的结束标记是否存在。您当前的问题是默认情况下的问题。不包括换行符-您需要在正则表达式中使用标志?s才能执行此操作 然而,仅仅启用该标志仍然不会导致您当前的正则表达式执行您期望它执行的操作 更好的正则表达式是:
(element\.\w+)=(?:[^##]+|##(?! END \1))+(?=## END \1)
然后执行ListFirstmatch[i]、'='和ListRestmatch[i]、'='以获取名称和值。“重赛”不会返回捕获的组
显然,上面的s是加倍的,以逃避CF
解析的上述正则表达式是:
(element\.\w+)=
匹配元素。和任何字母数字,将其放入捕获组1,然后匹配=字符
匹配任意数量的非散列字符,或使用负前瞻性匹配未后跟结束标记的散列?!。。。并引用捕获组1\1,使用非捕获组重复尽可能多的次数+:
向前看?=。。。确认变量的结束标记是否存在。非常感谢您,您太棒了!非常感谢你,你太棒了!
(?=## END \1)