在replaceAll中用Dart捕获括号

时间:2013-06-15 05:01:17

标签: regex dart

我正在开发一个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的方法,以及当前的前瞻,我将非常感激!

1 个答案:

答案 0 :(得分:3)

假设你的正则表达式是正确的,你应该使用String.replaceAllMapped.replaceAllMapped(new RegExp(r'(\w\s*)/(?=\s*\w)'), (match) => "${match[0]}|${match[1]}")

您可能也对String.splitMapJoin

感兴趣

Compeek已经指出,regexp可能不会做你想做的事。