微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何捕获所有事件

如何解决如何捕获所有事件

| 我有
<key,value>
对的列表,其格式设置为以下字符串: Akey = valueBAkey = valueB ... 因此,例如字符串“ 1”给出以下三对:
k1 = v1
k2 = v2
k3 = v3
我正在尝试使用PHP中的正则表达式减去所有的
<key,value>
对。 到目前为止,我得到的正则表达式如下:
.*A(.+)=(.+)B.*
但这只抓住了最后一对,pair5ѭ。 如何捕获所有事件?     

解决方法

您确定没有得到这个吗?
name: k1=v1BAk2=v2BAk3
 key: v3
如果您是,则您的第一个
.+
与ѭ8matching匹配,之后的所有内容将与最后一个
=
匹配。 我建议使用非贪婪修饰符
?
/.*A(.+?)=(.+?)B.*/
还要确保您使用的是
preg_match_all
,而不是
preg_match
。这相当于PHP \赋予正则表达式引擎
/g
标志,以允许多个匹配项。     ,使用这样的其他正则表达式:
if (preg_match_all(\'/A([^=]+)=([^B]+)B/\',\'Ak1=v1BAk2=v2BAk3=v3B\',$m) > 0) {
   var_dump($m[1]); // prints keys
   var_dump($m[2]); // prints values

}
输出值
array(3) {
  [0]=>
  string(2) \"k1\"
  [1]=>
  string(2) \"k2\"
  [2]=>
  string(2) \"k3\"
}
array(3) {
  [0]=>
  string(2) \"v1\"
  [1]=>
  string(2) \"v2\"
  [2]=>
  string(2) \"v3\"
}
    ,您需要使用非贪婪模式:
A(.+?)=(.+?)B
.+?
.*?
用于捕获所有字符,直到找到下一个字符。     ,另一个更新 这个正则表达式:
/A(k\\d+=(v\\d+))B/
将为您提供
k=v
匹配项的数组和仅包含值的数组。 在此正则表达式测试仪上尝试一下。看起来它正在为您提供想要的结果。这假定\“ k \”,\“ v \”,\“ A \”和\“ B \”是静态的,但是您应该能够更改它以接受动态值。 (实际上,这是任何值的内容:
/A(.*?=(.*?))B/
) 更新 实际上,我只是注意到您正在使用PHP。 只需使用preg_match_all即可获取字符串中所有出现的数组。 原版的 可能是使用全局运算符
//g
这匹配所有出现,而不仅仅是最后一个(或第一个)。     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?