我的文本以 (parag1 level="All")
开头作为开始标记,以 (/parag1)
作为结束标记结束,它们之间是文本.
如何使用 C# 中的正则表达式检查用户选择的文本是否带有开始标记或结束标记?
我对标签使用括号:(tag)text(/tag)
示例:
(Parag1 level="All")
This is my string1. This is my string2. This is my string3.
(/Parag1)
用户可以选择:
(Parag1 level="All")
This is my
或者
level="All")
This is my
或者(这个没有开始标签)
is my string1
或者(这个的开始标记为 l"),结束标记为 ( )
l")
This is my string1. This is my string2. This is my string3.
(
我想检查:
它是以“开始标记”还是“开始标记”的一部分开头?
所选文本 1 和 2,4 可以,但 3 不行。它是以“结束标记”还是“结束标记”的一部分结尾?
所选文本 1,2,3 不行,但 4 可以。
我如何更改包含以下所有文本的正则表达式模式。 图案:
(<Parag)\d+\s(Level=")\w+(">)
文字:
<Parag1 Level="all">
<Parag2 Level="Total">
Parag3 Level="all">
arag4 Level="all">
rag5 Level="all">
ag6 Level="all">
g7 Level="all">
8 Level="all">
Level="all">
Level="all">
evel="all">
vel="all">
el="all">
l="all">
="all">
="all">
"all">
all">
ll">
l">
">
>
更改正则表达式模式c#
最佳答案
我知道这不是RegEx
根据您的要求提供解决方案,但这是一个创造性的想法。由于您的示例文本具有一些类似 XML 的品质,您是否考虑过替换 (
和)
与 <
和>
并用 XML 解析器解析它?
要使用此解决方案,您的文本除了标签之外不能有任何括号,并且您必须将任何非法字符替换为其各自的转义序列。
您必须处理的另一个问题是根级标记。如果不存在,则必须将原始字符串包装在其中:
String data = // your string here with all opening and closed tags
data = "<root>" + data + "</root>" //if your data does not have a root tag, if it does, you can omit this
data = data.Replace('(', '<').Replace(')', '>');
XElement element = XElement.Parse(data);
关于c# - 使用正则表达式识别文本开头和结尾的选定文本#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9941013/