我只想捕获单词"assignment“,当它在行的开头和行尾时,word.There可以是"assignment”单词后面的零个或多个空格字符,并且像:或#或-这样的字符可能会出现。
例如,下面的几行应该匹配
Assignments或
Assignments :或
assignments 其中,as、以下字符串不应匹配
The details of various assignments that I have ...我从一个包含两次“赋值”单词的文件中得到了下面这行。
Ab Initio\r\r\a\r\a\v\r\r\fAssignments\rThe details of the various assignments that I 我写了下面的正则表达式,但它不能捕获任何东西:
^Assignments(\s|:|-|#)*?$当我像下面这样编写正则表达式时,"assignment“的两个匹配项都被选中:
Assignments(\s|:|-|#)*?($)?有没有猜到?我该怎么办?为此,我使用了C#。
我的C#代码如下:
RegEx x = new Regex(@"^Assignments(\s|:|-|#)*?$", RegexOptions.IgnoreCase | RegexOptions.Multiline);
output = x.Replace(inputText, "@@@@@@@@@@@@@@@@\r\n<project_details>$&");
if (x.IsMatch(inputText))
{
Match m = x.Match(inputText);
Console.WriteLine("\n\n\t~~~~~~~~~~ match found ~~~~~~~~~~~");
Console.WriteLine(m.Index +" : " + m.Value);
Console.WriteLine("\n\n\n\n" + output);
}
else
{
Console.WriteLine("$$$$$$$$$$$$$ no match %%%%%%%%%%%%%%");
}刚才我重新检查了我的输入字符串。文件中的原始行如下:
Assignments
The details of various assignmenths that I ...但是当我将文件流加载到一个字符串变量中时,我得到了相同的代码行,如下所示:
\r\r\a\r\a\v\r\r\fAssignments\rThe details of the various assignments that I有人知道发生了什么吗?我应该如何表达我的正则表达式?请帮帮我!
发布于 2009-10-28 18:16:02
在您的正则表达式中使用RegexOptions.Multiline,这将更改^和$的含义以分别匹配行的开始/结束(而不是匹配整个字符串的开始/结束)。
发布于 2009-10-28 18:19:32
第一种解决方案适用于不区分大小写和多行的情况:
Regex RegexObj = new Regex("^Assignments(\\s|:|-|#)*?$",
RegexOptions.IgnoreCase | RegexOptions.Multiline);发布于 2009-10-28 18:57:07
我将继续并假设您并不真的需要其中的换页符(\f),如果不需要,这将会起作用:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ScratchConsole
{
class Program
{
private static string[] punctuationChars = new string[]
{
":",
";"
};
static void Main(string[] args)
{
string foo = "Ab Initio\r\r\a\r\a\v\r\rAssignments\rThe details of the various assignments that I";
string[] split = foo.Split(new string[] { "\r" },StringSplitOptions.None);
foreach (string s in split)
{
if (s.StartsWith("Assignments"))
{
string temp = s.Remove(0, "Assignments".Length );
foreach (string c in punctuationChars)
{
temp = temp.Replace(c, "");
}
if (string.IsNullOrEmpty(temp.Trim()))
{
Console.WriteLine("it worked!");
}
}
}
Console.Read();
}
}
}我记得,有一句话是这样的:“有时候,有人遇到问题,他们决定使用正则表达式。现在他们有两个问题。”(不是实际的报价,但足够好:)
https://stackoverflow.com/questions/1636300
复制相似问题