【问题标题】:Extract tokens from string [closed]从字符串中提取标记[关闭]
【发布时间】:2013-03-18 16:43:30
【问题描述】:

我有一个 html 文件,其中包含未知数量的令牌。关键字稍后将由用户分配给某些数据。我想确定 html 包含多少令牌。 令牌可以看起来像:¤SomeID¤ 或 ¤Name¤ 甚至 ¤SomeLongerWord¤。

谁能给我一个完整的正则表达式代码,它会将标记从字符串中收集到一个列表中?

例子:

string ExtractFromThis = "Hello ¤Name¤, do you speak ¤SomeLanguage¤?"
List<string> IldLikeToHave = Magic(ExtractFromThis); 
//IldLikeToHave should contain {"¤Name¤", "¤SomeLanguage¤"}

谢谢!

【问题讨论】:

  • 关于正则表达式的参考,见php.netMDN
  • 我用一些手动拆分、连接、绝对低效的代码来做到这一点。我知道它可以用正则表达式完成,不幸的是我还不明白。
  • 这是什么语言?
  • C#,后面加了标签,不好意思。
  • 您可以使用简单的正则表达式,例如 ¤.*?¤(注意非贪婪星)匹配 ¤ 中包含的任何内容。这是sample。您可以使用Regex.Matches() 来获取所有匹配项。

标签: c# html regex string token


【解决方案1】:

您可以使用简单的正则表达式,例如 ¤.*?¤(注意非贪婪星号)匹配 ¤ 中包含的任何内容。这是sample。您可以使用Regex.Matches() 来获取所有匹配项。

如果您有兴趣获取分隔符内的文本,您也可以将量词放在像 ¤(.*?)¤ 这样的捕获组中,并使用 Match.Groups() 获取每个匹配项的捕获组。

我不会使用 C#,但这里有一个示例,它可能应该是这样的:

string pattern = @"¤(.*?)¤";
string input = "Hello ¤Name¤, do you speak ¤SomeLanguage¤?";
MatchCollection matches = Regex.Matches(input, pattern);
List<string> l = new List<string>();
foreach (Match match in matches) {
     l.add(match.Groups[1].Value);
}

【讨论】:

  • 正是我需要的,非常感谢!
  • 如何排除分隔符?
猜你喜欢
  • 2021-05-22
  • 2020-11-26
  • 2018-05-13
  • 2015-10-04
  • 2020-11-28
  • 2012-11-05
  • 2017-08-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多