我想在字符串中保留以下字符:
此时,我可以保留所有字母数字字符。问题在于叛逆的性格,我保留了所有的叛逆者,而我只想保留被字母数字字符包围的那些。这是我的代码:
Regex rgx = new Regex("[^a-zA-Z0-9' -]");
string newString = rgx.Replace(oldString, "");
示例:对于此字符串"abc'd1*%'"
,我想获得"abc'd1"
。
答案 0 :(得分:1)
您可以使用以下正则表达式,然后用空字符串替换匹配的字符。
@"(?<![A-Za-z])'|'(?![A-Za-z])|[^A-Za-z0-9']"
<强>解释强>
(?<![A-Za-z])'
匹配所有不带字母的单引号。|
或'(?![A-Za-z])
匹配所有未跟随字母的单引号。所以这两个模式无法匹配单引号,前面跟着一个字母表。|
或[^A-Za-z0-9']
从剩余的字符串中,此模式将匹配任何字符,但不匹配字母数字或单引号。<强>代码:强>
string str = "abc'd1*%'";
string result = Regex.Replace(str, @"(?<![A-Za-z])'|'(?![A-Za-z])|[^A-Za-z0-9']", "");
Console.WriteLine(result);
Console.ReadLine();
答案 1 :(得分:0)
答案 2 :(得分:0)
如果您要匹配空格,请尝试以下操作:
[\w\s-]+|(?<=[\w\s])'(?=[\w\s])
如果没有空格,请尝试:
[\w-]+|(?<=[\w])'(?=[\w])