Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
正则表达式:捕获组和空字段(SWIFT 5 | ICU正则表达式引擎)_Swift_Regex_Icu - Fatal编程技术网

正则表达式:捕获组和空字段(SWIFT 5 | ICU正则表达式引擎)

正则表达式:捕获组和空字段(SWIFT 5 | ICU正则表达式引擎),swift,regex,icu,Swift,Regex,Icu,我需要一些帮助来更正我的正则表达式字符串-我有一个文本字符串(一大块HTML),我需要获取这个HTML字符串,然后对其进行模式匹配,以便可以提取和使用我在“标记中嵌套的数据 让我们以 为了便于阅读,将其拆分 (p>

我需要一些帮助来更正我的正则表达式字符串-我有一个文本字符串(一大块HTML),我需要获取这个HTML字符串,然后对其进行模式匹配,以便可以提取和使用我在“
标记中嵌套的
数据

让我们以

为了便于阅读,将其拆分

(p><以下以下以下以下以下:

(p>


警告:

您非常非常接近

如果您使用:

(
(<div id=\d{1,2}>)
(UID:\d{1,2})
(currentPartNumber:(.{1,20}))
(workcenter:(.{1,20}))
(cycleTime:(.{1,6}))
(curPartCycleTime:(.{1,6}))
(partsMade:(.{1,6}))
(CycleTimeActual:(.{1,6}))
(target:(.{1,6}))
(actual:(.{1,6}))
(downtime:(.{1,6}))
(statusReason:(.{0,6}))
(lineStatus:(.{0,6}))
(Productionefficiency:(.{1,6}))
(plusminus:(.{1,6}))
(curProdTime:(.{1,30}))
(<\/div>)
)
通过使用
(statusReason:(.{0,6}))(lineStatus:(.{0,6}))
可以使statusReason和lineStatus的值真正成为可选值


我还简化了启动
和UID检测。

您非常非常接近

如果您使用:

(
(<div id=\d{1,2}>)
(UID:\d{1,2})
(currentPartNumber:(.{1,20}))
(workcenter:(.{1,20}))
(cycleTime:(.{1,6}))
(curPartCycleTime:(.{1,6}))
(partsMade:(.{1,6}))
(CycleTimeActual:(.{1,6}))
(target:(.{1,6}))
(actual:(.{1,6}))
(downtime:(.{1,6}))
(statusReason:(.{0,6}))
(lineStatus:(.{0,6}))
(Productionefficiency:(.{1,6}))
(plusminus:(.{1,6}))
(curProdTime:(.{1,30}))
(<\/div>)
)
通过使用
(statusReason:(.{0,6}))(lineStatus:(.{0,6}))
可以使statusReason和lineStatus的值真正成为可选值


我还简化了启动
和UID检测。

我认为一个大问题是
(currentPartNumber:(.{1,20})
捕获太多,因为
workcenter
出现在第20个位置之前。这可能对其他匹配也适用。感谢您的输入,添加到这一点上,虽然捕获组在另一个位置开始时没有停止??这基本上是我执行
{1,20}的唯一原因
是因为另一个闭包组在与后一个闭包组匹配后将停止匹配否??嗯,你是对的。我忘记了那个方便的功能。我认为一个大问题是
(currentPartNumber:(.{1,20})
捕获太多,因为
workcenter
出现在第20个位置之前。这可能对其他匹配也适用。感谢您的输入,添加到这一点上,虽然捕获组在另一个位置开始时没有停止??这基本上是我执行
{1,20}的唯一原因
是因为另一个闭包组在与后一个闭包组匹配后会停止匹配不??嗯,你是对的。我忘记了那个方便的功能。正则表达式字符串可以工作-意见片段不会直接来自你链接我的帖子(无顶部答案,因为它对我没用)“要求正则表达式解析任意HTML就像要求初学者编写操作系统一样,这是事实,但有时解析有限的已知HTML集是合适的。(插入更多单词)……正则表达式对我来说工作得很好,而且设置得非常快。“感谢你的修复,尽管正则表达式字符串可以工作——这篇评论文章并不是直接来自你链接我的帖子(sans top Response,因为它对我来说毫无用处)”虽然要求正则表达式解析任意HTML就像要求初学者编写操作系统一样,但有时候解析有限的已知HTML集是合适的。(插入更多的单词)…正则表达式对我来说工作得很好,而且设置得非常快。”不过,谢谢你的修复
(
(<div id=\d{1,2}>)
(UID:\d{1,2})
(currentPartNumber:(.{1,20}))
(workcenter:(.{1,20}))
(cycleTime:(.{1,6}))
(curPartCycleTime:(.{1,6}))
(partsMade:(.{1,6}))
(CycleTimeActual:(.{1,6}))
(target:(.{1,6}))
(actual:(.{1,6}))
(downtime:(.{1,6}))
(statusReason:(.{0,6}))
(lineStatus:(.{0,6}))
(Productionefficiency:(.{1,6}))
(plusminus:(.{1,6}))
(curProdTime:(.{1,30}))
(<\/div>)
)
UID:1
currentPartNumber:63222TRES003H1
workcenter:VLCSKD
cycleTime:98.8
curPartCycleTime:63.66
partsMade:233cur
CycleTimeActual:62.4
target:291
actual:233
downtime:97
statusReason:
lineStatus:
Productionefficiency:80.05
plusminus:-260
curProdTime:7/16/2019 12:28:01 PM