需要在运行时构造正则表达式(在我的例子中使用C#)来查找由某个模式包围的给定字符串。例如,程序知道它需要找到以myString
内的空格结尾的targetString
。如果我们将正则表达式设置为
string myRegex = myString + @"\s";
如果myString
包含正则表达式控制字符,则正则表达式将不可靠。 +等。例如说
myString = "f.f";
targetString = "f.ff fff f.f ff";
然后上面的正则表达式myRegex
将匹配第一个fff
,这不是我们想要的。当然,正确的正则表达式是f\.f\s
,但是考虑到大量的正则表达式控制字符,将myString
转换为这样的形式会很混乱。
有没有办法用任意输入字符串生成这样的正则表达式?理想情况下,可以使用一些控制字符来包裹myString
以指示字符串需要按字面意思匹配。所以在我的幻想中,正则表达式可以用类似
string myRegex = @"{{" + myString + @"}}\s";
括号代表我正在寻找的神奇结构。
请注意,myString
周围的模式可能比简单地“以\s
结尾”更复杂。