小能豆

正则表达式的简单问题

javascript

字符串 12s341df34518s谷歌90
我想匹配结果是
12s34
1df345
18s谷歌90
该怎么写?
Regex.Matches(“12s341df34518s谷歌90”, @”1([\s\S]+)”); 不行
Regex.Matches(“12s341df34518s谷歌90”, @”1([\s\S]+?)”);也不行


阅读 41

收藏
2024-06-19

共1个答案

小能豆

要将字符串 12s341df34518s谷歌90 按照你指定的分割规则匹配成 12s341df34518s谷歌90 三个部分,我们可以利用正则表达式的非贪婪匹配来实现这一点。

具体而言,我们希望匹配所有以 1 开头的子字符串,直到下一个 1 字符或字符串的结尾。以下是实现这一功能的正则表达式和代码示例:

using System;
using System.Text.RegularExpressions;

class Program
{
    static void Main()
    {
        string input = "12s341df34518s谷歌90";
        string pattern = @"1[^1]*";

        MatchCollection matches = Regex.Matches(input, pattern);

        foreach (Match match in matches)
        {
            Console.WriteLine(match.Value);
        }
    }
}

解释:
- 1[^1]* 解释如下:
- 1 匹配数字 1
- [^1]* 匹配任意数量的非 1 字符,使用 * 表示0或更多个。

这个正则表达式会从每个 1 开始匹配,直到遇到下一个 1 或字符串结束,满足题目的要求。

运行这段代码,输出将是:

12s34
1df345
18s谷歌90

这正是你想要的结果。

2024-06-19