如何在字符串中查找模式

本文关键字:查找 模式 字符串 | 更新日期: 2023-09-27 17:57:50

我正在尝试查找子字符串EnemyType('XXXX')的所有实例,其中XXXX是任意字符串,EnemyType('XXXX')的实例可以出现多次。

现在我在C#中使用index of/substring函数的联合体,但我想知道是否有更干净的方法?

如何在字符串中查找模式

使用正则表达式。示例:

using System.Text.RegularExpressions;
var inputString = "   EnemyType('1234')abcdeEnemyType('5678')xyz";
var regex = new Regex(@"EnemyType'(''d{4}'')");
var matches = regex.Matches(inputString);
foreach (Match i in matches)
{
    Console.WriteLine(i.Value);
}

它将打印:

EnemyType('1234')
EnemyType('5678')

要匹配的模式是@"EnemyType'(''d{4}'')",其中'd{4}表示4个数字字符(0-9)。括号用反斜杠转义。

编辑:由于您只希望字符串位于引号内,而不是整个字符串,因此可以使用命名组。

var inputString = "   EnemyType('1234')abcdeEnemyType('5678')xyz";
var regex = new Regex(@"EnemyType'('(?<id>[^']+)'')");
var matches = regex.Matches(inputString);
foreach (Match i in matches)
{
    Console.WriteLine(i.Groups["id"].Value);
}

现在它打印:

1234
5678

Regex是一个非常好的字符串解析工具。如果您经常解析字符串,regex可以让生活变得更轻松。