【问题标题】:RegEx for data between . and {之间的数据的正则表达式。和 {
【发布时间】:2010-09-17 06:21:53
【问题描述】:

我的正则表达式不是很好,所以我正在寻求帮助。我需要在.{ 之间获取内容。

例子:

  .aaa  { }
  .bbb {}
   ccc {}
   ddd {}
   eee {}

aaabbb 在一个字符串中。该数据可以更改,因此我想为此使用正则表达式。谢谢。

允许空格和换行。这是一个简单的文本文件。

【问题讨论】:

  • eee前面没有.,但应该匹配?
  • 您无需成为正则表达式- 即可使用它。 :)
  • @Kevin,不应该匹配
  • @Bart: 可能……这仍然很重要,我不想在这方面犯任何错误……

标签: c# .net javascript regex list


【解决方案1】:
(?<=\.)[^{]*(?=\{)

将匹配.{ 之间的所有内容。

解释:

(?&lt;=\.) 断言前面的字符是一个点。 [^{]* 匹配零个或多个字符,除了{ 之外的任何字符。 (?=\{) 断言后面的字符是{

遍历字符串中的所有匹配项 (C#):

Regex regexObj = new Regex(@"(?<=\.)[^{]*(?=\{)");
Match matchResults = regexObj.Match(subjectString);
while (matchResults.Success) {
    // matched text: matchResults.Value
    // match start: matchResults.Index
    // match length: matchResults.Length
    matchResults = matchResults.NextMatch();
} 

【讨论】:

  • 正如我所说,我只想在 . { 我不想包括 ddd 和 ccc 因为他们没有。在起点
  • 是的,这就是这个正则表达式的作用。有问题吗?
【解决方案2】:

我终于设法在 .和 { 并列出一个列表。使用 stackoverflow 的 REGEX 帮助。我已经替换了所有\n,\r,空格,将其替换为空白。我已经根据我的需要对其进行了一些更改。 这是我的最后一个功能,效果非常好。

public static void MakeList(string s)
        {

            string PATTERN = @"(?<=\.)[^{]*(?=\{)";

            s = s.Replace("\r", "").Replace("\n", "").Replace(" ","");
            var matches = Regex.Matches(s, PATTERN);
            var styleList = new List<string>();


            for (int i = 0; i < matches.Count; i++)
            {

                styleList.Add(matches[i].ToString());
            }
        }

【讨论】:

    【解决方案3】:

    这里有一个更简单的:

    \.([^{]*)\{
    

    如果您不希望结果中包含空格,请使用:

    \.\s*([^{]*?)\s*\{
    

    使用示例:

    foreach (Match match in Regex.Matches(input, @"\.\s*([^{]*?)\s*\{"))
        Console.WriteLine(match.Groups[1].Value);
    

    根据您的输入,此示例会打印“aaa”和“bbb”。

    【讨论】:

      猜你喜欢
      • 2016-11-18
      • 2012-02-22
      • 2023-04-07
      • 1970-01-01
      • 1970-01-01
      • 2012-06-01
      • 2013-09-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多