除了空格之外我还有一个很好用的东西,非常好用:
sed -i 's/ \(\w*\) \(\w*\) / \1 \2\1 /1' lig_mod.pdb
但添加空格似乎是一个问题。 我不需要任何有效性检查。
答案 0 :(得分:0)
这就像我想要的那样(警告:未经测试)
new Regex("[\\d-\\+,\\.\\s+]+");
答案 1 :(得分:0)
您的正则表达式几乎匹配了您不需要的所有内容,因为^
否定字符类中的符号。它匹配其他数字,逗号,句号,连字符,加号和回车符号。
请注意,回车不是您可以与\s
匹配的所有空格。如果您不想匹配换行符,请使用\p{Zs}
代替\s
。
如何为只包含0-9位数,逗号,点,加号,减号和空格的数字字符串创建正则表达式?
如果您需要匹配可能为空的完整字符串:
^[0-9,.+\s-]*$
见regex demo。如果字符串应包含至少1个符号,请使用^[0-9,.+\s-]+$
(注意最后的+
量词)。
正则表达式细分:
^
- 字符串的开头[0-9,.+\s-]*
- 0个或更多符号......
0-9
- 数字,
- 逗号.
- 一个点+
- 文字加\s
- 任何(Unicode,也是)空白-
- 字面连字符(减号)。$
- 字符串结束。在C#中,
var rx = new Regex(@"^[0-9,.+\s-]*$");
在逐字字符串文字中,您不必转义反斜杠,因为它们被视为文字。
如果您计划删除所有符号,以便保留数字,句号,逗号,连字符和加号,只需将其否定并移除锚点:
[^0-9,.+\s-]+
答案 2 :(得分:0)
在这里添加Regex的替代方法,您也可以使用LINQ
public static bool ContainsOnlyAllowedChars(string str, string charsAllowed = "0123456789,.+- ")
{
return str.All(c => charsAllowed.Contains(c));
}
用法
string myInput = "4,.";
Console.WriteLine(ContainsOnlyAllowedChars(myInput)); //outputs true
myInput = "a4,.";
Console.WriteLine(ContainsOnlyAllowedChars(myInput)); //outputs false
答案 3 :(得分:0)
解决方案,最终:
private static bool IsTextNumeric(string text)
{
Regex regex = new Regex(@"[^0-9-+,.\s]");// regex that matches disallowed text
return !regex.IsMatch(text);
}