正则表达式:在搜索中包含文本字符串

时间:2014-02-07 15:38:09

标签: html regex replace notepad++

我从html源代码中提取了一个很长的下拉选项列表,并希望用find&amp ;;来“清理它”。使用RegEx替换notepad ++中的函数,但我很难在RegEx中合并已知的固定文本字符串。

这是html源代码的摘录,用于了解我的重复模式:

"icecream":{"cone":"30p","cup":"16p","double":"10p","waffle":"20p"},
"sorbet":{"cone":"10p","cup":"17p","double":"13p","waffle":"18p"},

我希望这样结束(所以我可以将它导入excel):

icecream,cone,30p,cup,16p,double,10p,waffle,20p
sorbet,cone,10p,cup,17p,double,13p,waffle,18p

这就是我的尝试:

查找

"([a-z]*)":{"([cone])":"([0-9]*p)","([cup])":"([0-9]*p)","([double])":"([0-9]*p)","([waffle])":"([0-9]*p)"},

替换为:\1,\2,\3,\4,\5,\6,\7,\8,\9

我的查找步骤始终返回“0个文件中的0次点击”,我的猜测是那些已知的固定文本([圆锥],[杯]等)没有以正确的方式编码。也许我太天真了,不能期待这个简单的RegEx工作,但是花了一整天阅读教程我才能开始理解人们的RegEx是如何工作的,但仍然无法真正写出一个功能性的。

任何帮助都非常感谢,并提前非常感谢你!

更新

使用

“([AZ] *)”:{ “(锥)”: “([0-9] * P)”, “(杯)”: “([0-9] * P)”,” (双) “:”([0-9] * p)”, “(华夫)”: “([0-9] * p)”},

现在我有第二个问题:一些价格是“£1”而不是“[0-9] * p”,有没有办法在这种情况下包含“OR”命令?我试过了

“([AZ] *)”:{ “(锥)”: “([0-9] * P)|(£1)”, “(杯)”:“([0-9] * p)|(£1) “ ”(双)“: ”([0-9] * p)|(£1)“, ”(华夫)“:”([0-9] * p)|( £1)“},

但它不起作用。任何帮助非常感谢!

2 个答案:

答案 0 :(得分:0)

删除字面词周围的字符集[]。例如[cone]

这些是要匹配的文字,而不是字符集。

将正则表达式更改为:

"([a-z]*)":{"(cone)":"([0-9]*p)","(cup)":"([0-9]*p)","(double)":"([0-9]*p)","(waffle)":"([0-9]*p)"},

工作正则表达式示例:

http://regex101.com/r/kO3tU9

答案 1 :(得分:0)

  1. 查找["{}]|,$,无需替换。
  2. 查找:并替换为,
  3. 最终结果:

    icecream,cone,30p,cup,16p,double,10p,waffle,20p
    sorbet,cone,10p,cup,17p,double,13p,waffle,18p