C# Regex-仅当它有空格时从两侧查找
我需要一些关于正则表达式的帮助。我需要找到一个被任何元素包围的单词,例如-C# Regex-仅当它有空格时从两侧查找,c#,regex,C#,Regex,我需要一些关于正则表达式的帮助。我需要找到一个被任何元素包围的单词,例如-*。但我需要匹配它,只有当它在以太面上有空格或者没有空格的时候。例如,若它在文本的开头,那个么我在那个里就并没有空间了,结尾也是一样 这就是我的目的 string myString = "You will find *me*, and *me* also!"; string findString = @"(\*(.*?)\*)"; string foundText; MatchCollect
*
。但我需要匹配它,只有当它在以太面上有空格或者没有空格的时候。例如,若它在文本的开头,那个么我在那个里就并没有空间了,结尾也是一样
这就是我的目的
string myString = "You will find *me*, and *me* also!";
string findString = @"(\*(.*?)\*)";
string foundText;
MatchCollection matchCollection = Regex.Matches(myString, findString);
foreach (Match match in matchCollection)
{
foundText = match.Value.Replace("*", "");
myString = myString.Replace(match.Value, "->" + foundText + "<-");
match.NextMatch();
}
Console.WriteLine(myString);
string myString=“你会找到*me*,还有*me*!”;
字符串findString=@“(\*(.*?\*)”;
字符串文本;
MatchCollection MatchCollection=Regex.Matches(myString,findString);
foreach(匹配集合中的匹配)
{
foundText=match.Value.Replace(“*”,“”);
myString=myString.Replace(match.Value,“->”+foundText+”尝试以下模式:
string findString = @"(?<=\s|^)\*(.*?)\*(?=\s|$)";
当然,您需要根据需要扩展集合[\s,]
。您可能希望添加!
,?
和
,至少:[\s,!?。]
(不,
和?
不需要在字符集中转义!)
编辑
一个小演示:
string Txt = "foo *m*e*, bar";
string Pattern = @"(?<=[\s,]|^)\*(.*?)\*(?=[\s,]|$)";
Console.WriteLine(Regex.Replace(Txt, Pattern, ">$1<"));
string Txt=“foo*m*e*,bar”;
字符串模式=@”(?$1尝试以下模式:
string findString = @"(?<=\s|^)\*(.*?)\*(?=\s|$)";
当然,您需要根据需要扩展集合[\s,]
。您可能希望添加!
,?
和
,至少:[\s,!?。]
(不,
和?
不需要在字符集中转义!)
编辑
一个小演示:
string Txt = "foo *m*e*, bar";
string Pattern = @"(?<=[\s,]|^)\*(.*?)\*(?=[\s,]|$)";
Console.WriteLine(Regex.Replace(Txt, Pattern, ">$1<"));
string Txt=“foo*m*e*,bar”;
字符串模式=@”(?$1您可以在匹配项周围添加“行或空格开头”和“行或空格结尾”:
(^|\s)\*(.*?)\*(\s|$)
您现在需要参考中间的捕获组以获取匹配字符串。您可以在匹配字符串周围添加“行或空格的开头”和“行或空格的结尾”:
(^|\s)\*(.*?)\*(\s|$)
您现在需要为匹配字符串引用中间捕获组。您编写了“如果以太端有空格或没有空格”。但是这部分*me*,
没有空格或没有空格。它有coma。还是我错了?您编写了“如果以太端有空格或没有空格”。但是这部分*me*,
没有空格或没有空格东西。它有昏迷。或者我错了吗?谢谢,它工作得很好,Ruslan有一个正确的观点,谢谢你也修复了它。如果不太难的话,也许你可以再帮我做一件事。我如何转义字符?例如,m*e将显示为->m*eth,这实际上在原始字符串上有点错误。它将匹配“*me*,和*me**“
作为捕获。我认为颠倒逻辑并使用@”(?谢谢,它工作得很好,Ruslan也有一个正确的观点,谢谢你的修正。如果不太难的话,也许你可以帮我做一件事。我如何转义字符?例如,m*e将显示为->m*eth这实际上是原始字符串上的一个小错误。它将匹配“*me*,和*me**“
作为它的捕获。我认为颠倒逻辑并使用@”(?