正则表达式查找字符串模式
Posted
技术标签:
【中文标题】正则表达式查找字符串模式【英文标题】:Regex to find string pattern 【发布时间】:2021-09-15 17:47:25 【问题描述】:我需要在较大的文本中找到文本模式 [anystring].[anystring]。
我写了一个正则表达式代码来实现这个
var pattern = @"\[(.*?)\]\.\[(.*?)\]";
string CustomText = "some text here [anystring].[anystring] some text here etc"
var matchesfound = System.Text.RegularExpressions.Regex.Matches(CustomText, pattern);
此代码工作正常并检测到“[string].[string]”模式,但它失败了
var pattern = @"\[(.*?)\]\.\[(.*?)\]";
string CustomText = "[somestring]=[anystring].[anystring]"
var matchesfound = System.Text.RegularExpressions.Regex.Matches(CustomText, pattern)
在上述场景中,它标识了整个字符串“[somestring]=[anystring].[anystring]”,但我只希望将“[anystring].[anystring]”标识为匹配项。请问有什么帮助吗?谢谢。
【问题讨论】:
使用\[([^][]*)\]\.\[([^][]*)\]
【参考方案1】:
你可以使用
\[([^][]*)]\.\[([^][]*)]
请参阅regex demo。 详情:
\[
- 一个 [
字符
([^][]*)
- 第 1 组:除 [
和 ]
之外的任何零个或多个字符
]\.\[
- ].[
子字符串
([^][]*)
- 第 2 组:除 [
和 ]
之外的任何零个或多个字符
]
- ]
字符。
见C# demo:
var pattern = @"\[([^][]*)]\.\[([^][]*)]";
var CustomText = "[somestring]=[anystring].[anystring]";
var matchesfound = System.Text.RegularExpressions.Regex.Matches(CustomText, pattern);
foreach (Match m in matchesfound)
Console.WriteLine($"Group 1: m.Groups[1].Value\nGroup 2: m.Groups[2].Value");
输出:
Group 1: anystring
Group 2: anystring
【讨论】:
以上是关于正则表达式查找字符串模式的主要内容,如果未能解决你的问题,请参考以下文章