我正在开发一个Dart程序,它将解析XML文件中的数据。不幸的是,文件有点混乱,所以我正在做大量的正则表达式,以使它变得像样。由于Dart与Javascript一样,没有lookbehind功能,我一直在尝试使用捕获括号和mimic lookbehind的方法,但无济于事。 Dart根本不喜欢它的语法,只是告诉我function
未定义myClass
我的XML文件由以下格式的字符串组成:
<items>Chicken Sauces/ Creamy Curried Chicken Salad w/ Wild Rice</items>
完成后,我希望该字符串看起来像:
<items>Chicken Sauces| Creamy Curried Chicken Salad w/ Wild Rice</items>
我试过在字符串上调用它:.replaceAll(new RegExp(r'(\w\s*)/(?=\s*\w)'),"$0|$1")
但这给了我$0
和$1
的“预期标识符”错误。如果有人能给我一些关于如何正确使用捕获括号的指示,或者在Dart中模仿lookbehind的方法,以及当前的前瞻,我将非常感激!
答案 0 :(得分:3)
假设你的正则表达式是正确的,你应该使用String.replaceAllMapped:.replaceAllMapped(new RegExp(r'(\w\s*)/(?=\s*\w)'), (match) => "${match[0]}|${match[1]}")
您可能也对String.splitMapJoin
感兴趣Compeek已经指出,regexp可能不会做你想做的事。