定位每个' *'在括号内

时间:2014-03-30 10:48:02

标签: php regex

我想知道是否可以在brakets中定位charcter的每个实例。

例如,我想针对每个' *'符号在这里:

  

[Lorem ipsum * dolor sit * amet,consectetur * adipisicing elit]

但是如果它不在支架之内我不想定位它

  

Lorem ipsum * dolor sit * amet,consectetur * adipisicing elit

所以我从零开始:\*/g定位*的所有实例。 如果我这样做:\[.+?(\*).+\]我可以得到它的最后一个实例,但有没有办法将它们全部定位?或者我必须提取行李中的每个句子并单独定位它们?

2 个答案:

答案 0 :(得分:1)

这样做:

/(?!=\[.*)\*(?=.*\])/g

演示:http://regex101.com/r/yX9lZ8

答案 1 :(得分:1)

你可以使用这样的东西,假设你确定括号是平衡的并且你没有嵌套括号:

\*(?=[^[]*\])

regex101 demo

如果您有嵌套和平衡括号并想要替换所有星号,则需要进行一些递归:

\*(?=(?:[^][]|(\[(?:[^][]|(?1))*\]))*\])

regex101 demo