假设我们在 Javascript 中有以下正则表达式代码行:
.replace(/[\*\+\-=~><\"\?^\${}\(\)\:\!\/[\]\\\s]/g, '\\$&') // replace single character special characters
.replace(/\|\|/g, '\\||') // replace ||
.replace(/\&\&/g, '\\&&') // replace &&
.replace(/AND/g, '\\A\\N\\D') // replace AND
.replace(/OR/g, '\\O\\R') // replace OR
.replace(/NOT/g, '\\N\\O\\T'); // replace NOT
我正在尝试将这些正则表达式代码行转换为以下 C# 正则表达式:
public static String ReturnSanitizedString(string query)
{
String pattern1 = @"[\*\+\-=~><\""\?^\${ }\(\)\:\!\/[\]\\\s]"; // Replace the single character special characters.
String pattern2 = @"\|\|";
String pattern3 = @"\&\&";
String pattern4 = @"AND";
String pattern5 = @"OR";
String pattern6 = @"NOT";
String replacement1 = "\\$&";
String replacement2 = "\\||";
String replacement3 = "\\&&";
String replacement4 = "\\A\\N\\D";
String replacement5 = "\\O\\R";
String replacement6 = "\\N\\O\\T";
Regex rgx = new Regex(pattern1);
string result1 = rgx.Replace(query, replacement1);
Regex rgx2 = new Regex(pattern2);
string result2 = rgx2.Replace(result1, replacement2);
Regex rgx3 = new Regex(pattern3);
string result3 = rgx3.Replace(result2, replacement3);
Regex rgx4 = new Regex(pattern4);
string result4 = rgx4.Replace(result3, replacement4);
Regex rgx5 = new Regex(pattern5);
string result5 = rgx5.Replace(result4, replacement5);
Regex rgx6 = new Regex(pattern6);
string finalResult = rgx6.Replace(result5, replacement6);
return finalResult;
}
以下句子(这是查询):
"AND there! are? (lots of) char*cters 2 ^escape!"
执行上面的代码后应该转换成这句话:
\A\N\D\ there\!\ are\?\ \(lots\ of\)\ char\*cters\ 2\ \^escape\!
我无法让它工作,我在上面的方法中做错了什么。
最佳答案
在 pattern3
中,您有正则表达式 \&\&|
,它基本上匹配所有内容。
只需像这样删除最后一个管道即可得到您想要的:
String pattern3 = @"\&\&";
关于javascript - 如何将 JavaScript 正则表达式转换为 C# 正则表达式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42902443/