如何在字符串中查找模式
本文关键字:查找 模式 字符串 | 更新日期: 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可以让生活变得更轻松。