我无法在带有正则表达式的文件中获得匹配的内容。 我的要求是用户在文本框1中提供一些文本,在文本框2中提供一些文本。 正则表达式方法应该通过组合文本框中的两个文本来搜索文件。 截至目前,我能够找到用户提供的单一搜索匹配。
以下是代码:
private Regex R = null;
public void GetFileInfo(string textbox1val)
{
if (this.R.IsMatch(text))
{
// my other code goes here....
}
}
//on button click I am passing textbox text to regex and to GetFileInfomethod
private void button1_Click(object sender, EventArgs e)
{
this.R = new Regex(textbox1.Text);
GetFileInfo(textbox1.Text);
}
请帮助我解决这个问题,提前感谢您的帮助。
此致 Aditya.J
答案 0 :(得分:1)
如果文本框包含要搜索的确切文本(如文本说明所示)而不是正则表达式(尽管代码示例),您的正则表达式初始化可能是
this.R = new Regex(string.Format("{0}|{1}",
Regex.Escape(textbox1.Text), Regex.Escape(textbox2.Text)));
如果只找到一个用户提供的字符串,那么
this.R = new Regex(string.Format("^(?=.*{0})(?=.*{1})",
Regex.Escape(textbox1.Text), Regex.Escape(textbox2.Text)));
如果在文件中找到了两个用户提供的字符串。
请注意Regex.Escape
以转义用户可能输入的任何正则表达式特殊字符。
第一个正则表达式是一个简单的alternation。
第二个正则表达式使用positive lookbehinds,并解释了使用过的构造here。