好的,所以我有一个我自己无法解决的问题。我正在转换从特定链接下载的HTML文件检索的数据。 HTML文件包含一个基于DIV的表,而不是TABLE标头。但这是次要问题。主要问题是,当转换为TXT时,我需要输出文件具有html表行中的一行数据,该行已经完成并且几乎可以按预期工作。问题是html表中有空单元格,在原始HTML文本中只是 空格,但是在输出TXT文件中,我需要使用0而不是空白空间。另一个问题是,我必须删除一些 伴随数据值的空格。我知道这听起来有点复杂,我将基于示例进行解释。
所以可以说这是我的原始html数据:
<div style="position:absolute;top:141px;left:270px;font-family:Arial;font-size:8pt;color:#000080;background-color:#E3E3E8;z-index: 9999;">
AB-CDE // expected result: AB-CDE
<DIV style="position:absolute;left:325px;top:141px;height:16px;width:47px; background-color: #E3E3E8"></div>
<div style="position:absolute;top:141px;left:333px;font-family:Arial;font-size:8pt;color:#000080;background-color:#E3E3E8;z-index: 9999;">
2:27 // expected result: 2:27
</DIV>
<DIV style="position:absolute;left:372px;top:141px;height:16px;width:170px; background-color: #E3E3E8"></div>
<div style="position:absolute;top:141px;left:372px;font-family:Arial;font-size:8pt;color:#000080;background-color:#E3E3E8;z-index: 9999;">
SURENAME Name // expected result: SURENAME Name
</DIV>
<DIV style="position:absolute;left:592px;top:141px;height:16px;width:25px; background-color: #E3E3E8"></div>
<div style="position:absolute;top:141px;left:599px;font-family:Arial;font-size:8pt;color:#000080;background-color:#E3E3E8;z-index: 9999;">
1 // expected result: 1
</DIV>
<DIV style="position:absolute;left:617px;top:141px;height:16px;width:25px; background-color: #E3E3E8"></div>
<div style="position:absolute;top:141px;left:626px;font-family:Arial;font-size:8pt;color:#000080;background-color:#E3E3E8;z-index: 9999;">
// expected result: 0
<DIV style="position:absolute;left:617px;top:141px;height:16px;width:25px; background-color: #E3E3E8"></div>
<div style="position:absolute;top:141px;left:626px;font-family:Arial;font-size:8pt;color:#000080;background-color:#E3E3E8;z-index: 9999;”>
因此所需的REGEX必须在大括号>和<之间找到数据,查找是否有&nbsp;在它们之间和:
如果只有&nbsp; (单个或多个)-替换为“ 0”(零)
如果有&nbsp;与:
a)AB-CDE类型的文本或
b)名称格式为SURENAME名称或
c)时间设置为&nbsp; s
之间的2:27删除此匹配项中的所有&nbsp;仅保留AB-CDE文本或SURENAME名称或时间2:27。
所以我想到了:
情况1)(?<=>)\ n * \ s *()+?\ s * \ n *(?= <)https://regex101.com/r/eZ1gT7/1980
情况2a)(?<=>)\ n * \ s *() [AZ] +-[AZ] +()+ \ s \ n *(?= <){ {3}}
情况2b)(?<=>)\ n * \ s *() [AZ] +()+ [A-Za-z] +()+ \ s \ n * (?= <)https://regex101.com/r/eZ1gT7/1981
情况2c)(?<=>)\ n * \ s *() [0-9] +:[0-9] +() \ s * \ n *(? = <)https://regex101.com/r/eZ1gT7/1983
现在我的问题是,在情况2a,2b和2c中,我需要排除 AB-CDE , SURENAME名称和时间 2:27 >来自实际比赛。它们仅用于标记大括号之间的范围,在该范围内必须基于特定正则表达式进行特定替换。 怎么做? 请帮忙!我正在为此苦苦挣扎。