Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >正则表达式模式匹配良好,但输出不完整

正则表达式模式匹配良好,但输出不完整
EN

Stack Overflow用户
提问于 2011-02-13 05:49:07
回答 1查看 248关注 0票数 2

我正在尝试这个正则表达式模式:

代码语言:javascript
运行
AI代码解释
复制
$string = '<div class="className">AlwaysTheSame:</div>Subtitle <br /><span class="anotherClass">entry1</span><span class="anotherClass">entry2</span><span class="anotherClass">entry3</span>';
preg_match_all('|<div class="className">AlwaysTheSame:</div>(.*?)<br />(<span class="anotherClass">(.*?)</span>)*|', $string, $matches);
print_r($matches);
exit;

<span class="anotherClass">entry</span>不能存在或多次存在,模式似乎与它匹配,无论存在还是不存在都很好地工作,但输出是:

代码语言:javascript
运行
AI代码解释
复制
Array
(
    [0] => Array
        (
            [0] => <div class="className">AlwaysTheSame:</div>Subtitle <br /><span class="anotherClass">entry1</span><span class="anotherClass">entry2</span><span class="anotherClass">entry3</span>
        )

    [1] => Array
        (
            [0] => Subtitle 
        )

    [2] => Array
        (
            [0] => <span class="anotherClass">entry3</span>
        )

    [3] => Array
        (
            [0] => entry3
        )

)

<span...包含完整的字符串,因此它与我需要的全部匹配,但在Array2和3中,我只得到最后一个数组

如何才能获得输出数组中的所有<span...,而不仅仅是最后一个?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-02-13 06:20:13

你不能直接这么做,至少在PHP中不能。重复捕获组总是包含它们匹配的最后一个表达式。允许您访问重复组的每个匹配项的The exception is .NET where regex matches have an additional property。此外,Perl 6可以做这样的事情-但不能做PHP。

解决方案:使用

代码语言:javascript
运行
AI代码解释
复制
~<div class="className">AlwaysTheSame:</div>(.*?)<br />((?:<span class="anotherClass">(.*?)</span>)*)~

现在,第二个捕获组包含所有<span>标签。使用另一个正则表达式,您可以提取所有匹配项:

代码语言:javascript
运行
AI代码解释
复制
~(?<=<span class="anotherClass">).*?(?=</span>)~

顺便说一句,我使用~作为正则表达式分隔符--使用|会让IMO感到困惑。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4982684

复制
相关文章
pycharm显示没有interpreter_pycharm interpreter为空
在pycharm中创建新project的时候总会遇到interpreter invalid,需要你去重新配置interpreter
全栈程序员站长
2022/09/27
1.9K0
pycharm显示没有interpreter_pycharm interpreter为空
jq 判断是否为空,为空隐藏指定 div
<style>.mydiv{ width:300px; height:300px; background:red;}</style> <div class="mydiv">     <div class="content">          这是一句话,删除的话会让 mydiv display:none;          </div> </div> <script src="https://lib.baomitu.com/jquery/3.4.1/jquery.min.js"></script> <sc
Savalone
2020/02/11
7.5K0
sonarqube6代码覆盖率显示为空 单元测试不为空
搭建完sonarqube6.1之后,按照网上找到的命令执行:mvn clean install mvn sonar:sonar,打开sonarqube网页查看结果时却发现一个奇怪的现象:
johnhuster的分享
2022/03/29
1.9K0
sonarqube6代码覆盖率显示为空  单元测试不为空
在DAX里将空值或0显示为减号?这个问题可能困扰不少人!
近期碰到个很有意思的例子,一个度量值,其中判断某个值为0时,结果用减号“-”表示,不是0时执行相应的除法:
大海Power
2021/08/31
3.9K0
python判断是否为空_python 判断对象是否为空
在实际的工作当中,我们难免要与空值打交道,相信不少初学者都会写出下面的代码:if a is None:
全栈程序员站长
2022/07/01
11.1K0
小程序根据返回值是否为空判断标签是否显示
如果为空,则不显示奖励这两个字的标签 wxml <view class="cu-item" wx:for="{{allSignList}}" wx:key="index"> <view class="content"> <view wx:if="{{item.taskReward}}">奖励:{{item.taskReward}}</view> </view> </view> js Page({ data: { allSignList: [] }, onLoad: fun
王小婷
2020/12/28
2.9K0
小程序根据返回值是否为空判断标签是否显示
java判断空对象为空_Java判断对象是否为空(包括null ,””)的方法[通俗易懂]
public static boolean isEmpty(Object obj)
全栈程序员站长
2022/06/25
7.6K0
java如何判断对象为空_java对象如何判断是否为空
在实际书写代码的时候,经常会因为对象为空,而抛出空指针异常java.lang.NullPointerException。
全栈程序员站长
2022/06/25
13.9K0
java如何判断对象为空_java对象如何判断是否为空
JavaScript中为空判断
摘要总结:本文介绍了JavaScript中为空判断的不同情况,包括判断字符串是否为空、变量是否被定义和初始化过。通过这些判断,可以帮助开发人员编写更加健壮的代码。
林老师带你学编程
2018/01/03
4.2K0
java判断list为空
if(null == list || list.size() ==0 ){ }
似水的流年
2018/01/12
5K0
Java Optional 初始为空
Optional<QualificationStateLabelInfo> stateSpecificLabel = null;
HoneyMoose
2022/05/18
2.9K0
Java Optional 初始为空
java判断list为空
if(null == list || list.size() ==0 ){ } list.isEmpty()和list.size()==0 没有区别 isEmpty()判断有没有元素 而size()返
似水的流年
2019/12/10
3.7K0
UrlReferrer为空的问题?
官方解释:获取有关客户端上次请求的 URL 的信息,该请求链接到当前的 URL。 1.也就是说,如果用Request.Redirect之后,再用Request.UrlReferrer是得不到前一个页面的链接的,因为这不是客户端的请求。 2.既然服务端不行,那换个思路:在客户端用js导航如何?比如下面这样 A.aspx上用window.location='B.aspx' 但实践证明在B.aspx上用Request.UrlReferrer仍然为空,即js导航也不行! 3.用A链接试一下 A.aspx上写一段ht
菩提树下的杨过
2018/01/23
2.6K0
java判断list为空
if(null == list || list.size() ==0 ){ } list.isEmpty()和list.size()==0 没有区别 isEmpty()判断有没有元素 而
似水的流年
2018/01/18
3.9K0
环境变量:PYTHONPATH
大家在编写模块的时候,总会遇到这么一个问题:把模块放到安装目录下的Lib目录里面就可以正常使用了,可是过了几天重装了Python,自己写的模块也没了,然后就是感觉身体被掏空,心情极度难受,精神非常崩溃,毕竟自己辛辛苦苦写的库没了。
不可言诉的深渊
2019/07/26
10.7K0
jdbctemplate查询为空报错_java空指针异常举例
Dao类是不能直接new出来的必须是通过 ApplicationContext applicationContext= new
全栈程序员站长
2022/11/17
3.3K0
使用“空”对象替代引用是否为空判断
使用Null对象替代引用是否为空判断 编程语言中最常见运行时异常非NullPointerException莫属,只要程序依赖于外部的输入数据,比如说http请求传递的查询字符串参数、关系数据库连接、磁盘文件读取,空引用异常就无法避免。通常,程序需要满足某些条件才能正常的往下执行,假如这些条件依赖外部输入数据,而这些外部输入的数据肯定无法保证百分百不出错,比如说网络连接失败、数据库用户名密码错误等,当程序被这些节外生枝的障碍打断时,空引用异常就极有可能被引发。 比如说,原本我们调用一个方法,这个方法会执行连接
用户1608022
2018/04/11
7.9K0
java怎么判断对象为空_java中怎么判断对象是否为空
一种是org.apache.commons.lang3包下的;另一种是org.springframework.util包下的。
全栈程序员站长
2022/06/28
7.2K0
java怎么判断对象为空_java中怎么判断对象是否为空
@NacosInjected private NamingService namingService 为空
发布者:全栈程序员栈长,转转请注明出处:https://javaforall.cn/2185.html原文链接:
全栈程序员站长
2021/04/07
2.4K0
java 对象为空判断_java中判断对象是否为空的方法
首先,直接使用 object == null 去判断,对象为null的时候返回true,不为null的时候返回false。然后,在object != null 为true的情况下,进一步去判断对象的所有属性是否为null。
全栈程序员站长
2022/08/15
12K0
java 对象为空判断_java中判断对象是否为空的方法

相似问题

安装错误认为pythonpath为空

20

Ubuntu监督PYTHONPATH未被设定

214

Ubuntu 14.04上的PYTHONPATH序

59

Github Action/Ubuntu:添加到PYTHONPATH

126

在ubuntu上设置PYTHONPATH无效标识符失败

17
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档