Bob*_*ob. 0 html javascript regex
在以下字符串中......
var str = 'Foobar is so "awesome." I <span prop="nifty">"really"</span> <span prop="attr">think it is so</span> <span prop="nifty" prop="attr">"cool!"</span>'
Run Code Online (Sandbox Code Playgroud)
...我如何编写一个正则表达式,匹配单词awesome,really和cool周围的引号("),而不匹配HTML标签中的引号?
我正在使用JavaScript的替换函数替换引号 "
我希望有一个正则表达式,我可以使用这样......
str.replace(/regex-magic/g, """)
Run Code Online (Sandbox Code Playgroud)
..给我输出...
Foobar is so `"`awesome.`"` I <span prop="nifty">`"`really`"`</span> <span prop="attr">think it is so</span> <span prop="nifty" prop="attr">`"`cool!`"`</span>
Run Code Online (Sandbox Code Playgroud)
非常感谢!!
与往常一样,使用正则表达式进行HTML/XML处理是一个非常糟糕的主意.
无论如何,我想可以使用以下正则表达式:
([^<]*<[^>]*>[^<]*)*?\"(.*?)\"
Run Code Online (Sandbox Code Playgroud)
第一组用于确保每个打开的标签也被关闭.第二组确保您匹配引号之间的任何内容.
但是,如果您希望正确执行此操作,则可以使用tidy它将其转换为xml文件,然后使用例如xmlint执行XPath查询.我确信Javascript也有这样的工具.
示例(in bash):
$ echo 'Foobar is so "awesome." I <span prop="nifty">"really"</span> <span prop="attr">think it is so</span> <span prop="nifty" prop="attr">"cool!"</span>' | tidy -asxhtml -numeric 2>/dev/null | xmllint --html --xpath 'normalize-space(/)' - | grep -P -o '".*?"'
"awesome."
"really"
"cool!"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
84 次 |
| 最近记录: |