regex - Matlab 正则表达式提取值
问题描述
我想使用 Matlab 正则表达式从模式中提取值 <value>2021</value>
,, <ns1:value>3049</ns1:value>
( <ns2:value>9902</ns2:value>
我想要 2021、3049、9902 作为我的输出)。
一般来说,我正在寻找<value>
and</value>
或 between <ns(some one-digit number 0-9): value>
and之间的数字 </ns(some one-digit number 0-9): value>
。
我的逻辑是考虑两种情况 1) 价值 | 2) ns[0-9]:value,所以我的代码是
regexp(data, '((?<=<\((ns[0-9]:)|v)*value>)\w+(?=<\/\((ns[0-9]:)|v)*value>))','match')
但它没有用。
有人知道怎么做这个吗?任何帮助将不胜感激,非常感谢!
请注意,我已经成功地用于regexp(data, '((?<=<\w*:*value>)\w+(?=<\/\w*:*value>))','match')
提取值,但我想要更具体的东西来使代码更高效(我需要抓取数千个文件)。
解决方案
您可以使用带有反向引用的 2 个捕获组来匹配ns
单个数字部分,而不是使用环视。
<
匹配开口支架((?:ns\d:)?)
捕获组 1,可选匹配ns
后跟单个数字和:
value>
从字面上匹配(\d+)
捕获组 2,匹配 1+ 位</\1value>
匹配<
后跟\1
第 1 组中匹配的内容的反向引用,然后匹配值>
查看正则表达式演示。
推荐阅读
- javascript - 删除使用 OBJLoader Three.js 加载的对象
- php - 使用 PHP 从浏览器向 MySQL 插入多列
- algorithm - 二分查找分数
- apache-kafka - 压缩的Kafka主题可以用作键值数据库吗?
- numpy - 如何将 np.dot 的数据类型结果从 float64 更改为 uint8?
- azure - 使用 Azure LoadBalancerProbe 自动重启失败的实例
- python-3.x - Python Tabula 库 - 输出文件为空
- json - 如何处理JSON数据swiftUI中的`self`变量
- java - 如何在 ActionListener 中覆盖 JLabel 上的图像?
- java - 我在构建 android 应用程序时遇到运行时错误