C# 捕获开始/结束字符内的文本,但忽略双结束字符
我试图用正则表达式获取开始/结束字符(“”)内的文本,同时忽略文本内的双结束字符(因此“使用a匹配C# 捕获开始/结束字符内的文本,但忽略双结束字符,c#,regex,C#,Regex,我试图用正则表达式获取开始/结束字符(“”)内的文本,同时忽略文本内的双结束字符(因此“使用a匹配,而不是后跟另一个终止匹配似乎是最简单的方法: <(.*)>(?!>) 使用Regex.Matches将进行上述捕获 扩大 < # Match < ( # Start capture [^>]* # Match many non-> (?: # Start non-capturing group >
,而不是后跟另一个
终止匹配似乎是最简单的方法:
<(.*)>(?!>)
使用Regex.Matches
将进行上述捕获
扩大
< # Match <
( # Start capture
[^>]* # Match many non->
(?: # Start non-capturing group
>> # Match >>
[^>]* # Match many non->
)* # Repeat zero or more
) # End capture
> # Match >
匹配<
(#开始捕获
[^>]*#匹配许多非->
(?:#启动非捕获组
>>#匹配>>
[^>]*#匹配许多非->
)*#重复0次或更多次
)#结束捕获
>#匹配>
也就是说,它将尖括号的内容分为>
和非
块,并匹配无限数量的块。它将处理>
(捕获>
)。使用一个匹配一个
,而不是后面跟着另一个
来终止匹配似乎是最简单的方法:
<(.*)>(?!>)
使用Regex.Matches
将进行上述捕获
扩大
< # Match <
( # Start capture
[^>]* # Match many non->
(?: # Start non-capturing group
>> # Match >>
[^>]* # Match many non->
)* # Repeat zero or more
) # End capture
> # Match >
匹配<
(#开始捕获
[^>]*#匹配许多非->
(?:#启动非捕获组
>>#匹配>>
[^>]*#匹配许多非->
)*#重复0次或更多次
)#结束捕获
>#匹配>
也就是说,它将尖括号的内容分为>
和非
块,并匹配无限数量的块。它将处理>
(捕获>
)
或者试试这个,不要在开头使用
或者尝试此操作,不要在开头使用
。您可以使用:并获得第一组
(?:\<)(.*)(?:\>)
(?:\)
您可以使用:并获得第一组
(?:\<)(.*)(?:\>)
(?:\)
这是我的做法:)
|[^>]*)*)>
它首先匹配开头的
,然后尝试匹配code>,如果不匹配,则重复>
以外的任何字符,直到找到结尾的
它还适用于添加的需求;)
.这是我的做法:)
|[^>]*)*)>
它首先匹配开头的
,然后尝试匹配code>,如果不匹配,则重复>
以外的任何字符,直到找到结尾的
它还适用于添加的需求;)
.您给出的第一个示例有什么问题……它似乎对我有效。@RickRunowski啊,我忘记了这个示例输出了“test”而不是“test>”。它仍然是错误的,但我会澄清问题。您给出的第一个示例有什么问题……它似乎对我有效。@RickRunowski啊,我忘记了这个示例输出了“test”而不是“test>”测试>”。这仍然是错误的,但我会澄清问题。这比我的选项要好:
]{2,}.*.[124;[^>]*)>
这与测试>>中的更多>>或甚至更多>/code>匹配,我猜这是错误的。请参阅。感谢您的回答和解释,我真的很想知道为什么第二个问题不起作用。您的回答与原始问题匹配,但与我出于安全考虑而遗漏的另一个要求不起作用ort,很简单的问题。谢谢你的帮助!这比我的选项要好:]{2,}.*.[124;[^>]*)>
这与测试>>中的更多>>或甚至更多>/code>匹配,我猜这是错误的。请参阅。感谢您的回答和解释,我真的很想知道为什么第二个问题不起作用。您的回答与原始问题匹配,但与我出于安全考虑而遗漏的另一个要求不起作用ort,最简单的问题。谢谢你的帮助!我在猜,但我很确定它仍然应该匹配
正确的猜测分类,澄清了问题。谁能解释一下,为什么用这个表达式(?!>)“之前的quesiton mark!and>是做什么的?我在猜,但我很确定它仍然应该匹配
正确的猜测分类,”澄清了问题。有人能解释一下,为什么在这个表达式中(?!>)quesiton mark!and>是做什么的吗?这很好,我也玩过这个变体:这很好,我也玩过这个变体:
<test>>Value><test>
test>>Value
test
<(.*)>(?!>)
<([^>]*(?:>>[^>]*)*)>
< # Match <
( # Start capture
[^>]* # Match many non->
(?: # Start non-capturing group
>> # Match >>
[^>]* # Match many non->
)* # Repeat zero or more
) # End capture
> # Match >
(\w+)>{1,2}(\w+)
(?:\<)(.*)(?:\>)
<((?:>>|[^>])*)>