我有这样的行:
[something]
[[something else]]
[[[another text here]]]
...
我想要捕获内部文本something
,something else
和another text here
。
为此,我写了这个regex:
m/^([^\[\]]+|\[(?1)\])$/gm
不幸的是,即使我在[^\[\]]+
附近放置一个捕获组,它也不会捕获内部文本。我想捕获组在第一次匹配时锁定其内容,而不是在最后一次递归期间。
如何使用捕获组捕获内部文本?
答案 0 :(得分:2)
使用PCRE无法从地面级别的递归中获取捕获组内容。
您的特定示例的解决方法是不使用递归功能并检查每个左括号是否始终有一个结束括号:
//weather icons check
if(weatherId=800){
$('#type').css('background-image', 'url(http://publicdomainvectors.org/photos/weather-clear.png)');
}
else if(weatherId>=801 && weatherId<=804){
$('#type').css('background-image','url(http://publicdomainvectors.org/tn_img/stylized_basic_cloud.png)');
}
else if(weatherId>=300 && weatherId<=531){
$('#type').css('background-image','url(http://publicdomainvectors.org/tn_img/sivvus_weather_symbols_4.png)');
}
(在第2组,https://stackoverflow.com/search?q=%5Bsony-camera-api%5D+usb)
但是你不能用这种方式使用更复杂的字符串(在同一级别有几个组)。