从文本中提取部分以包含分割点需要什么正则表达式?

What regular expression needed to extract a part from a text to include splitting points too?

提问人:user20465780 提问时间:11/19/2022 更新时间:11/19/2022 访问量:154

问:

这是我从文本框中获取字符串的代码:

string txtS = TextBoxS.Text;

而不是使用正则表达式提取一些文本:

string[] splitS=Regex.Split(txtS, @"\s(we|tomorow)\s");

text: Today we have a rainy day but maybe tomorow will be sunny.

现在,在拆分后,这给了我一个拆分点内的输出 OutPut:下雨天,但也许

但是使用什么正则表达式来获得包括分割点或分隔符在内的输出,我尝试了其他一些常规压缩,但没有找到合适的......so I want this output: we have a rainy day but maybe tomorow

C# asp.net asp.net-mvc-3

评论

0赞 Rivo R. 11/19/2022
尝试将组的值与 匹配并提取。请参阅此处的正则表达式工具中的示例:regex101.com/r/ZVBnZQ/1\s(we.+tomorow)\s
0赞 user20465780 11/19/2022
我试过加分或加号,但没有用......
0赞 NineBerry 11/19/2022
是否有可能以不同的顺序甚至多次出现?那你会期待什么呢?tomorrowwe
0赞 Rivo R. 11/19/2022
在正则表达式工具中尝试这个例子,它有效。我尝试执行生成的 C# 代码,控制台显示您的帖子中预期的正确答案。您必须使用该正则表达式进行 MATCH 而不是 SPLIT。但是,如果 WE 或 TOMOROW 的顺序不同,则正则表达式显然不会相同。
0赞 user20465780 11/19/2022
不同的顺序是可以的,所以我将如何提取:“我们有一个下雨天,但也许”只有?

答:

0赞 Rivo R. 11/19/2022 #1

C# 代码为:

using System;
using System.Text.RegularExpressions;

public class Example
{
    public static void Main()
    {
        string pattern = @"\s(we.+tomorow)\s";
        string input = @"Today we have a rainy day but maybe tomorow will be sunny.";
        RegexOptions options = RegexOptions.Multiline | RegexOptions.IgnoreCase;

        foreach (Match m in Regex.Matches(input, pattern, options))
        {
            Console.WriteLine("{0}", m.Value);
        }

        Console.ReadKey();
    }
}

enter image description here

评论

0赞 user20465780 11/19/2022
问题是我也使用单词作为分隔符,我只提取文本而不使用分隔符,而我需要另一部分,我也包括分隔符......那么需要将它们结合起来吗?
0赞 Rivo R. 11/19/2022
是的,如果使用,则应将结果存储在另一个数组或列表变量中,并添加(即预置追加)分隔符。如果您使用,您可能会在匹配的结果中拥有分隔符,如我上面的答案所示。Regex.Split()Regex.Matches()