我想要一个正则表达式,它将返回不同模式的匹配子字符串的零个或多个匹配项.

Different patterns to match

  1. <sym>Any value</sym>

  2. <sps>Any value</sps>

  3. <sbs>Any value</sbs>

  4. 包括空格和上述3个标记之外的特殊字符的任何字符串

其中"Any Value"是包括空格和特殊字符的任何字符串.

Test Cases

  1. abcd<sps>2</sps><sbs>yy</sbs>efgh<sym>b</sym>

  2. <sym>nu</sym>Hello World<sps>6&</sps><sbs>10</sbs>With Special Characters$#<sym>b</sym>个个

  3. <sps>2</sps>Test<sbs>yy</sbs><sym>b</sym>End String

Results

1.

abcd
<sps>2</sps>
<sbs>yy</sbs>  
efgh
<sym>b</sym>
<sym>nu</sym>  
Hello World 
<sps>6&</sps>  
<sbs>10</sbs>
With Special Characters$#
<sym>b</sym>
<sps>2</sps>
Test
<sbs>yy</sbs>
<sym>b</sym>
End String

我try 了以下正则表达式:

(?([a-zA-Z0-9]+))<sym>[^.]*</sym>|<sps>[^.]*</sps>|<sbs>[^.]*</sbs>(?([a-zA-Z0-9]+))

Result against "Test Case 1":获取以下字符串,其中我没有获取标记外的字符串.

<sps>2</sps> <sbs>yy</sbs> <sym>b</sym>

Result against "Test Case 2":获取完整的输入文本.

<sym>nu</sym>Hello World<sps>6&</sps><sbs>10</sbs>With Special Characters$#<sym>b</sym>个个

你能在这个背景下帮我一下吗?提前谢谢你了!

推荐答案

为此,您应该使用适当的XML解析器.在C#中,您可以使用XElement.这允许您使用Linq-to-XML来查询它.

由于您的XML没有根,我们需要添加一个根.

var myxml = @"abcd<sps>2</sps><sbs>yy</sbs>efgh<sym>b</sym>";

var doc = XElement.Parse("<Root>" + myxml + "</Root>");
var nodes = doc.Descendants()
            .Where(e => e.Name == "sps" || e.Name == "sbs")
            .Cast<XNode>()
            .Concat(doc.Nodes().OfType<XText>());
Console.WriteLine(string.Join("\r\n", nodes));

dotnetfiddle

Java相关问答推荐

如何将一些命令写入Chrome控制台,然后使用Java将输出存储在selenium中

try 使用Java 9或更高版本对特殊对象图进行解析时出现NullPointerException

如何调用Firebase Realtime Database中的子图像列表到android studio中的回收器视图?

Java 21虚拟线程执行器的性能比池化操作系统线程的执行器差?

当涉及到泛型时,类型推理在Java中是如何工作的?

使用GridBagLayout正确渲染

GSON期间的Java类型擦除

如何在Application.yaml中连接字符串?

使用PDFBox从PDF中删除图像

Sack()步骤中的合并运算符未按预期工作

带有Health Check的Spring Boot BuildPack打破了本机映像构建过程

在VS代码中,如何启用Java Main函数的&Q;Run|DEBUG&Q;代码?

在Java 15应用程序中运行Java脚本和Python代码

二进制数据的未知编码/序列化

如何在不作为类出现的表上执行原生查询?

JavaFX:无论何时显示应用程序,如何更改组件/ node 位置?

Bash数组的单引号元素并使用空格连接

整数->;双取消框,但双->;int不';t开箱.为什么?

如何使用Hibernate v6.2构建NamingStrategy,以表名作为所有列的前缀?

MapStruct记录到记录的映射不起作用