我想在c#
中使用正则表达式拆分字符串输入:
"some1 Text (#something) someothertext (#something) some3 Text"
预期输出:
some1 Text
someothertext
some3 Text
我的代码
string str = "some1 Text (#something) someothertext (#something) some3 Text";
Regex regex = new Regex(@"\(([^)]*)\)", RegexOptions.IgnoreCase);
var result = regex.Split(str);
输出
some1 Text
#something
someothertext
#something
some3 Text
答案 0 :(得分:0)
String input = "some1 Text (#One) some2 other (#something) some3 Text";
String pattern = @"\(#.*?\)";
System.Text.RegularExpressions.Regex regex = new System.Text.RegularExpressions.Regex(pattern);
string output = regex.Replace(input, System.Environment.NewLine);
正则表达式的细分: \(#。*?\)
答案 1 :(得分:0)
您可以将分隔符和字段与(?<field>[^\(]+)(?<delim>\(#[^\)]*\))?
匹配。您可以按名称引用每个部分,例如field
或delim
。例如:
var input = "some1 Text (#One) some2 other (#something) some3 Text";
var pattern = @"(?<field>[^\(]+)(?<delim>\(#[^\)]*\))??";
var matches = Regex.Matches(input,pattern);
var fields=from match in matches.OfType<Match>()
select match.Group["field"].Value;
foreach(var field in fields)
{
Console.WriteLine(field);
}
结果:
some1 Text
some2 other
some3 Text
该表达式捕获不是(
作为字段的所有内容。捕获(# and
)之间的任何内容作为分隔符。
捕获并不代表生成字符串。循环仅检索字段的值