如何在正则表达式中使用拉丁扩展字符
本文关键字:丁扩展 扩展 字符 正则表达式 | 更新日期: 2023-09-27 17:55:29
我有包含普通特殊字符和拉丁扩展字符的字符列表。我想使用这些特殊字符作为正则表达式。
Spcl字符列表:
var listAdvSpclChar = File.ReadLines(_spclCharFilePath, Encoding.Default);
StringBuilder sb = new StringBuilder();
foreach (string s in listAdvSpclChar)
{
sb.Append(s);
}
sb.ToString();
输出:
,.()-"*/#ÃŽ‚¦:'‚°?_+~& ¢¬³¹¼;'=%Æ’º¯…™£$‹“]¾Â`^¡Âµ[ž±<}¨!>¸¥Âœ²©·Â«®Ë„§¤¿Â¶´†»{|
我想使用上面的 spcl 字符,如下所示
Regex.IsMatch(textString, @"[^" + sb + "]";
我在解析时遇到错误
"[,.()-"*/#ÃŽ‚¦:'‚°?_+~& ¢¬³¹¼ ;'=%Æ’º¯…™£$‹“]¾ `^¡ µ[ž±<}¨!>¸¥ œ²©· «®Ë„§¤¿ Â¶´†»{|]"
- [x-y] range in reverse order.
如果我向每个字符添加'
,那么我在解析时会出现错误
"[,'.'(')'-'"'*'/'#'Ã'Æ’'Ã…'½'‚'Â'¦':'''â'€'Å¡'°'?'_'+'~'&' '¢'¬'³'¹'¼' ';'''='%'Æ'’'º'¯'…'â„¢'£'$'‹'“']'¾' '`'^'¡' 'µ'['ž'±'<'}'¨'!'>'¸'Â¥' 'Å“'²'©'·' '«'®'Ë'„'§'¤'¿' 'Â'¶'´'†'»'{'|']"
- Unrecognized escape sequence 'Ã.
我有如下所示的字符串行:
00000001,0020,0000000000Ø00027006,paper tape 19 28°,759,1648.000 ,1648.000 ,,06092014,12319999,000100022404,HALB,18.51 ,100 ,FS,PT-S12DS120-28,00166789,01,00000015,,00166789,M,01
00000001,0050,000000000000027006,paper tape 19 28°,759,2280.000 ,2280.000 ,,08262015,12319999,000100023811,HALB,18.51 ,100 ,FS,S75P306P-3M,00166882,01,00000021,,00166882,M,010
上面的一行包含Ø
在我的正则表达式列表中不可用,但我找不到该行作为错误行。
问题是我可以在正则表达式中使用上面的 spcl 字符吗
你只需要转义几个字符,请参阅字符类内的元字符。您可以使用以下代码:
var listAdvSpclChar = File.ReadLines("Your Path", Encoding.Default);
List<string> toEscape = new List<string>()
{
@"-",
@"'",
@"]",
};
string escape = @"'";
StringBuilder sb = new StringBuilder();
foreach (string s in listAdvSpclChar)
{
if (toEscape.Contains(s))
{
sb.Append(escape);
}
sb.Append(s);
}
// And then use it:
Regex.IsMatch("textString", string.Format("[^{0}]", sb));