帮帮我。我花了很多时间,但都无济于事。 有必要隔离一个三个单词的字符串,最后一个单词应该用引号括起来,里面不应该有空格。 例如,来自string:
文字设置vrouter“Untrust-Gi”某些文字
我需要(在С#中)
请查看代码。如果可能,请更正代码。我把它添加到我的问题设置vrouter“Untrust-Gi”
using System.Text.RegularExpressions;
namespace WindowsFormsApplication2
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
OpenFileDialog opendialog = new OpenFileDialog();
if (opendialog.ShowDialog() == DialogResult.OK)
{
StreamReader sr = new StreamReader(opendialog.FileName);
string pattern = @"(\w+\s){2}(""\S+?"")";
while (sr.EndOfStream == false)
{
var match=Regex.Matches(sr, pattern);
textBox1.AppendText(match.ReadLine()+'\n');
}
}
}
}
}
答案 0 :(得分:2)
如果您知道引号内的表达式始终以“set vrouter”开头,则可以使用此正则表达式
set vrouter \"(.*)\"
然后提取捕获组(.*)
使用以下工具测试您的表达式
获得提取的表达式后,您可以非常轻松地在C#中重新构建字符串。
var value = String.Format("set vrouter \"{0}\"", extractedExpression);
答案 1 :(得分:1)
var match = Regex.Match(yourStringHere, @"(\w+\s){2}(""\S+?"")");
if(match.Success)
result = match.Value;
\ S表示“不是空格”,因此它回答了“内部应该没有空格”的要求。
编辑:这是你修改后的代码,你没有指定文件大小,所以也许有更好的方法来阅读它...OpenFileDialog opendialog = new OpenFileDialog();
if (opendialog.ShowDialog() == DialogResult.OK)
{
var lines = File.ReadLines(opendialog.FileName);
string pattern = @"(\w+\s){2}(""\S+?"")";
foreach(var line in lines)
{
var matches= Regex.Matches(line, pattern);
foreach(Match match in matches)
{
if(match.Success)
textBox1.AppendText(match.Value+'\n');
}
}
}