正则表达式匹配从第一个下划线到最后一个下划线的值
Regex matches value from first underscore to last underscore
我有一个正则表达式,它应该匹配字符串并在 </code> <code>
和 </code>.</p> 中保留值
<p>下面是字符串:</p>
<pre><code>Node=LTE03:File=/PMloc/dir22/XML/Network=ARX_ROOT_AO,Network=LTE,Network=Base,Manage=LTE,Element=LTE03/A20210115.1545+0530-1600+0530_Network=ARX_ROOT_AO,Network=LTE,Network=Base,Manage=LTE,Element=LTE03_file.xml.gz:Unit=U-3,Meter=1
我想要以下值:
</code> => <code>Network=ARX_ROOT_AO,Network=LTE,Network=Base,Manage=LTE,Element=LTE03
</code> => <code>A20210115.1545+0530-1600+0530
</code> => <code>Unit=U-3
这是我的表达:
File=([^_]+(?=_))_(\S+)_file.xml(.\S+)?:(\S+),
上面的表达式 </code> 包含从第一个下划线 (<code>_
) 到最后一个下划线 (_
) 的值。因此 </code> 无法获得所需的时间值。只有 <code>
给了我适当的价值。
如何通过在 Perl 中使用正则表达式来获得我上面提到的需要的值?
您可以通过对 _
以及 /
和 :
使用否定字符 class 来获得 4 个组,以不交叉某些字符。
您可以微调模式以在匹配项之间添加或排除更多字符。
File=[^=]+/(\w+=[^/]+)/([^_]+)[^:\s]*file\.xml(\.[^:\s]*):([^,\s]*)
说明
File=[^=]+/
匹配 File=
后跟除 =
之外的任何字符并匹配 /
(\w+=[^/]+)
组 1,匹配 1+ 个单词字符后跟 =
和除 /
之外的任何字符
/
字面匹配
([^_]+)
组 2 匹配除 _
之外的任何字符
[^:\s]*file\.xml
匹配除 :
以外的任何字符或空白字符,然后匹配 file.xml
(\.[^:\s]*)
第 3 组,匹配 .
和除 :
或空白字符 之外的任何字符
:
字面匹配
([^,\s]*)
第 4 组,匹配除空白字符或逗号之外的任何字符
我有一个正则表达式,它应该匹配字符串并在 </code> <code>
和 </code>.</p> 中保留值
<p>下面是字符串:</p>
<pre><code>Node=LTE03:File=/PMloc/dir22/XML/Network=ARX_ROOT_AO,Network=LTE,Network=Base,Manage=LTE,Element=LTE03/A20210115.1545+0530-1600+0530_Network=ARX_ROOT_AO,Network=LTE,Network=Base,Manage=LTE,Element=LTE03_file.xml.gz:Unit=U-3,Meter=1
我想要以下值:
</code> => <code>Network=ARX_ROOT_AO,Network=LTE,Network=Base,Manage=LTE,Element=LTE03
</code> => <code>A20210115.1545+0530-1600+0530
</code> => <code>Unit=U-3
这是我的表达:
File=([^_]+(?=_))_(\S+)_file.xml(.\S+)?:(\S+),
上面的表达式 </code> 包含从第一个下划线 (<code>_
) 到最后一个下划线 (_
) 的值。因此 </code> 无法获得所需的时间值。只有 <code>
给了我适当的价值。
如何通过在 Perl 中使用正则表达式来获得我上面提到的需要的值?
您可以通过对 _
以及 /
和 :
使用否定字符 class 来获得 4 个组,以不交叉某些字符。
您可以微调模式以在匹配项之间添加或排除更多字符。
File=[^=]+/(\w+=[^/]+)/([^_]+)[^:\s]*file\.xml(\.[^:\s]*):([^,\s]*)
说明
File=[^=]+/
匹配File=
后跟除=
之外的任何字符并匹配/
(\w+=[^/]+)
组 1,匹配 1+ 个单词字符后跟=
和除/
之外的任何字符
/
字面匹配([^_]+)
组 2 匹配除_
之外的任何字符
[^:\s]*file\.xml
匹配除:
以外的任何字符或空白字符,然后匹配 file.xml(\.[^:\s]*)
第 3 组,匹配.
和除:
或空白字符 之外的任何字符
:
字面匹配([^,\s]*)
第 4 组,匹配除空白字符或逗号之外的任何字符