在 PHP 中使用正则表达式提取方括号内的数字或字母(不包括方括号本身)

3
我有一个正则表达式可以提取括号内的任何内容: [^[\]]+(?=]) 1)如果括号内只包含字母(a-z),我想将整个内容提取出来。
2)如果括号内只包含数字(0-9),我想将整个内容提取出来。
因此,我需要两个正则表达式。

(?<=[)[a-zA-Z]+(?=]) 和 (?<=[)[0-9]+(?=]) - Tim007 - 解决方案有效! - Sergelie
\b[a-zA-Z]+(?=]) 和 \b[0-9]+(?=]) 可以在Javascript中使用 - Tim007 - Sergelie
2个回答

5

试试这个

(?<=\[)[a-zA-Z]+(?=\])

演示

(?<=\[)[0-9]+(?=\])

Demo


(?<=\[)[a-zA-Z]+(?=\])(?<=\[)[0-9]+(?=\]) - Tim007
跟进问题,如果从事JavaScript开发工作会是什么样的体验? - Sergelie
JavaScript 中不支持后顾断言 (?<=\[) - Tim007
是的,但如果我放弃它,那么我就回到了我从第一个正则表达式得到的结果(不能区分字母和数字)。 - Sergelie
\b[a-zA-Z]+(?=\])\b[0-9]+(?=\]) 在Javascript中可以使用。https://regex101.com/r/dW8vL8/1 - Tim007
显示剩余2条评论

3
你可以在JavaScript中执行此操作以获得相同的结果。
var str = "Lorem [123] ipsum [dolor] sit [123dolor] amet.";
var re = new RegExp(/(?:\[)(\d+|[a-zA-Z]+)(?=\])/g);
var result = [];
var myArray;
while ((myArray = re.exec(str)) !== null) {
  result.push(myArray[1]);
}
console.log(result); // ["123", "dolor"]

你的模式匹配为[ab___cE^^[][\\\\][][]][]。https://regex101.com/r/pG2rB8/1 - Casimir et Hippolyte
(?:[)(\d+|[a-zA-Z]+)(?=]) - Tim007
感谢 @Tim007。已更正。 - nikhil

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接