我需要匹配所有这些开始标记:
<p>
<a href="foo">
Run Code Online (Sandbox Code Playgroud)
但不是这些:
<br />
<hr class="foo" />
Run Code Online (Sandbox Code Playgroud)
我想出了这个,并希望确保我做对了.我只抓住了a-z.
<([a-z]+) *[^/]*?>
Run Code Online (Sandbox Code Playgroud)
我相信它说:
/,然后我有这个权利吗?更重要的是,你怎么看?
我正在尝试<input>使用此模式匹配类型"隐藏"字段:
/<input type="hidden" name="([^"]*?)" value="([^"]*?)" />/
Run Code Online (Sandbox Code Playgroud)
这是示例表单数据:
<input type="hidden" name="SaveRequired" value="False" /><input type="hidden" name="__VIEWSTATE1" value="1H4sIAAtzrkX7QfL5VEGj6nGi+nP" /><input type="hidden" name="__VIEWSTATE2" value="0351118MK" /><input type="hidden" name="__VIEWSTATE3" value="ZVVV91yjY" /><input type="hidden" name="__VIEWSTATE0" value="3" /><input type="hidden" name="__VIEWSTATE" value="" /><input type="hidden" name="__VIEWSTATE" value="" />
Run Code Online (Sandbox Code Playgroud)
但我不知道的type,name和value属性将始终出现在相同的顺序.如果type属性是最后一个,则匹配将失败,因为在我的模式中,它在开始时.
问题:
如何更改模式以使其匹配,无论<input>标签中属性的位置如何?
PS:顺便说一下,我正在使用基于Adobe Air的RegEx桌面工具来测试正则表达式.
真正的现代正则表达式真正识别哪种语言?
每当存在具有反向引用的无限长度捕获组(例如(.*)_\1)时,正则表达式现在匹配非常规语言.但是,就其本身而言,这还不足以匹配诸如S ::= '(' S ')' | ?匹配对的parens的无上下文语言.
递归正则表达式(对我来说是新的,但我确信存在于Perl和PCRE中)似乎至少能识别出大多数CFL.
有没有人在这方面做过或读过任何研究?这些"现代"正则表达的限制是什么?对于LL或LR语法,他们是否严格认可或严格低于CFG?或者是否存在可以被正则表达式识别而不是CFG 而且相反的语言?
非常感谢与相关论文的链接.
我正在尝试创建一个VBScript解析器.我想知道最好的方法是什么.我研究过和研究过.最流行的方式似乎是像Gold Parser或ANTLR这样的东西.
我想实现的功能是动态检查VBScript中的语法错误.每次文本更改时,我都不想编译整个VBS.我该怎么做呢?我尝试使用Gold Parser,但我认为没有增量方法可以通过它进行解析,比如部分解析树...有关如何为这种情况实现部分解析树的任何想法?
我通过GOLD Parser实现了VBscript Parsing.但是它仍然不是部分解析器,在每次文本更改后解析整个脚本.有没有办法建立这样的东西.
THKS
我有一个用C#编写的WPF项目,为了获得有关外部依赖项的一些信息,我需要解析一个VB6脚本.脚本的位置发生了变化,其内容发生了一些变化,但我感兴趣的主要代码的格式如下:
Select Case Fields("blah").Value
Case "Some value"
Fields("other blah").List = Lists("a list name")
...
End Select
Run Code Online (Sandbox Code Playgroud)
我需要从中提取出当字段'blah'设置为'某个值'时,字段'other blah'的列表会更改为列出'列表名'.我尝试使用谷歌搜索作为.NET库编写的VB6解析器,但还没有找到任何东西.有可能得到像这样的答案,我应该只使用正则表达式在VB6脚本中找到这样的代码,并提取我需要的数据吗?代码可以在子程序中找到,这样我就无法传递'blah','some value'并返回'other blah','list name'.我无法控制这个VB6脚本的内容.