c# - 使用正则表达式识别文本开头和结尾的选定文本#

标签 c# regex string

我的文本以 (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/

相关文章:

c# - 从文件生成/构建 map

javascript - 找到开始字符串的制表符数量的最佳/最快方法是什么?

c# - 按字符拆分字符串并在C#中用逗号分隔

python - 为什么找不到子字符串时 Python 会抛出错误?

c# - ASP.NET 表单自动保存

c# - 如何更新 Azure.Storage.Blob 中的元数据

c# - ASP.NET javascript 参数为 null

php - 长时间运行的控制台命令速度变慢

c# - 如何在 LINQ 中执行 String.Replace?

c - c 中的字符串指针在用 * 写入时不起作用