如何匹配<>之间的字符串?
How to match a string between <>?
我尝试了 \w+\:(\w+\-?\.?(\d+)?)
但那是不正确的
我有以下文字
<staticText:HelloWorld>_<xmlNode:Node.03>_<date:yyy-MM-dd>_<time:HH-mm-ss-fff>
The end result I want is something like the following
["staticText:HelloWorld", "xmlNode:Node.03","date:yyy-MM-dd","time:HH-mm-ss-fff"]
您可以使用以下正则表达式。
<(.*?)>
然后看看小组如何检索结果。
Regex rx = new Regex("<(.*?)>");
string text = "<staticText:HelloWorld>_<xmlNode:Node.03>_<date:yyy-MM-dd>_<time:HH-mm-ss-fff>";
MatchCollection matches = rx.Matches(text);
Console.WriteLine(matches.Count);
foreach(Match match in matches){
var groups = match.Groups;
Console.WriteLine(groups[1]);
}
这一行应该可以匹配到内容:
<(.*?)>
它会捕捉到你似乎不想要的末尾的箭头,但你可以在没有正则表达式的情况下将它们删除。
您应该考虑像 https://regexr.com 这样的网站 - 它允许您粘贴案例并查看它如何与它们一起工作,从而极大地帮助编写正则表达式。
匹配 <> 中的任何字符串。希望这有帮助。
<(.*?)>
您的模式与示例数据的第 3 部分和第 4 部分不匹配,因为在这部分 \w+\-?\.?(\d+)?
破折号和数字仅匹配一次且不重复。
对于您的示例数据,您可以使用 character class [\w.-]+
来匹配冒号后的部分,使匹配更广泛一些:
<(\w+\:[\w.-]+)>
或者为了使其更具体,请使用重复模式为 Node.03
部分和年月日时等部分指定模式。
<(\w+\:\w+(?:\.\d+|\d+(?:-\d+)+)?)>
说明
<
匹配 <
(
捕获组
\w+\:\w+
匹配 1+ 个单词字符,:
和 1+ 个单词字符
(?:
非捕获组
\.\d+
匹配 .
和 1+ 个数字
|
或
\d+(?:-\d+)+
匹配 1+ 位并重复 1+ 次匹配 -
和 1+ 位
)?
关闭非捕获组并使其可选
)
关闭捕获组
>
我尝试了 \w+\:(\w+\-?\.?(\d+)?)
但那是不正确的
我有以下文字
<staticText:HelloWorld>_<xmlNode:Node.03>_<date:yyy-MM-dd>_<time:HH-mm-ss-fff>
The end result I want is something like the following
["staticText:HelloWorld", "xmlNode:Node.03","date:yyy-MM-dd","time:HH-mm-ss-fff"]
您可以使用以下正则表达式。
<(.*?)>
然后看看小组如何检索结果。
Regex rx = new Regex("<(.*?)>");
string text = "<staticText:HelloWorld>_<xmlNode:Node.03>_<date:yyy-MM-dd>_<time:HH-mm-ss-fff>";
MatchCollection matches = rx.Matches(text);
Console.WriteLine(matches.Count);
foreach(Match match in matches){
var groups = match.Groups;
Console.WriteLine(groups[1]);
}
这一行应该可以匹配到内容:
<(.*?)>
它会捕捉到你似乎不想要的末尾的箭头,但你可以在没有正则表达式的情况下将它们删除。
您应该考虑像 https://regexr.com 这样的网站 - 它允许您粘贴案例并查看它如何与它们一起工作,从而极大地帮助编写正则表达式。
匹配 <> 中的任何字符串。希望这有帮助。
<(.*?)>
您的模式与示例数据的第 3 部分和第 4 部分不匹配,因为在这部分 \w+\-?\.?(\d+)?
破折号和数字仅匹配一次且不重复。
对于您的示例数据,您可以使用 character class [\w.-]+
来匹配冒号后的部分,使匹配更广泛一些:
<(\w+\:[\w.-]+)>
或者为了使其更具体,请使用重复模式为 Node.03
部分和年月日时等部分指定模式。
<(\w+\:\w+(?:\.\d+|\d+(?:-\d+)+)?)>
说明
<
匹配<
(
捕获组\w+\:\w+
匹配 1+ 个单词字符,:
和 1+ 个单词字符(?:
非捕获组\.\d+
匹配.
和 1+ 个数字|
或\d+(?:-\d+)+
匹配 1+ 位并重复 1+ 次匹配-
和 1+ 位
)?
关闭非捕获组并使其可选
)
关闭捕获组>