我遇到一种情况,我需要使用正则表达式进行一些字符串操作,但我从未使用过正则表达式。
我的字符串是这样的 “这是[[制造]],[[制造]]的值(value)是[[[BMW]]],并且该[[[BMW]]]在市场上的可用性非常[高]。[[的另一个值(value)品牌]] 是 [[[奥迪]]],[[[奥迪]]] 的可用性是 [中等]”。
我有三个字符串类型的列表。 list1 包含 3 个字符串元素,用于替换 仅限 [[ ]] 之间的字符。因此第一个 [[Make]] 将被 list1 中的第一个元素替换。第二个 [[Make]] 将被列表中的第二个元素替换,依此类推。
类似的概念可以应用于list2,它也是一个包含字符串元素的列表。 列表 2 将替换 [[[ ]]] 之间的所有元素,并且按顺序排列。所以这个列表有 4 个元素。
List3 又是一个包含 2 个元素的字符串列表,仅替换 [] 之间的内容。
现在我面临的问题是,无论我使用什么正则表达式将 [ ] 的内容替换为 list3,它也会尝试替换 [[ ]] 和 [[[ ]]] 之间的内容。
谁能帮我解决这个问题吗?
最佳答案
这就是想法
String s = " [x] [[x]]".replaceAll("(?<!\\[)\\[(?!\\[).*?\\]", "[1]");
它仅替换 [x] 并保留 [[x]] 不变。它使用负向外观 (?<!\\[)
跳过双括号
关于javascript - 如何使用正则表达式将多个序列替换为列表中的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32152329/