谁熟悉php的正则,请帮转成C#的
keywords = '超G强抗t△干dst△扰敏■■感※◇词 kljb过&滤jb一■&№正■№则匹◎←配代crSBtr码(只……支{持^中#^文)';
$blackwords = '超强|抗干扰|敏感词|过滤|正则匹配|代码|只支持|中文';
if(preg_match("/$blackwords/", preg_replace('/[^\x{4e00}-\x{9fa5}]/u', '', $keywords), $match)) ///转这一句///
{
/* 检测到有敏感词 执行相关代码 */
var_dump($match);
}
[解决办法]
再改一下我的代码,可以找到原始字符和位置
- VB.NET code
Dim keywords = "超G强抗t△干dst△扰敏■■感※◇词 kljb过&滤jb一■&№正■№则匹◎←配代crSBtr码(只……支{持^中#^文)" Dim blackwords = "(超强|抗干扰|敏感词|过滤|正则匹配|代码|只支持|中文)" blackwords = Regex.Replace(blackwords, "(?<=[\u4e00-\u9fa5])[^\|\u4e00-\u9fa5]*(?=[\u4e00-\u9fa5])", "[^\u4e00-\u9fa5]*") Dim Matchs = Regex.Matches(keywords, blackwords) For Each Match As Match In Matchs If Match.Success Then Debug.Print("敏感字符: """ & Match.Value & """ 位于该字符串第" & (Match.Index + 1).ToString & "个字符起共" & Match.Length.ToString & "个字符") End If Next