c# - 正则表达式 c# 涉及数字和空格

标签 c# .net regex

以下正则表达式的作用是什么?

    \d{1,3}.?\d{0,3}\s[0-9a-zA-Z. -]{4,40} 

我知道 d 代表数字,但 1,3 有什么作用。

如果有人能进一步解释,我们将不胜感激

最佳答案

{n,m} 是一个量词,表示“至少 n 次,最多 m 次”。像所有量词一样,默认情况下它是贪婪的,对于支持它们的正则表达式方言,它也有惰性和占有性版本({n,m}?{n,m}+ 分别——不幸的是,.NET 支持前者但不支持后者。

如果n不指定,则为0;如果未指定m,则为无穷大。

这意味着您可以使用此量词“重写”经典的 *+?:

  • *{0,}
  • +{1,};
  • ?{0,1}

(注意:我认为.?中的.本来是一个字面点,这意味着它应该被转义,即\.? ;正则表达式中的点表示“任何字符”,字符类除外。)

关于正则表达式本身:

\d{1,3}        # match a digit, one to three times, followed by
.?             # any character, 0 or one time (see my remark), followed by
\d{0,3}        # a digit, zero to three times, followed by
\s             # a space character, followed by
[0-9a-zA-Z. -] # a digit, or any letter, or a dot, or a space, or a hyphen,
{4,40}         # 4 to 40 times

最后需要注意的是,.NET语言中的\d并不局限于0-9,它可以匹配其他Unicode数字。

编辑:考虑到@AlanMoore 的评论,固定的正则表达式将是:

\d{1,3}(\.\d{1,3})?\s[0-9a-zA-Z. -]{4,40}

也许这个正则表达式也应该被锚定...但这只是一个猜测。

关于c# - 正则表达式 c# 涉及数字和空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8857840/

相关文章:

c# - Winforms 上的 SQL 更新语句

c# - 在不保存远程文件的情况下测量互联网速度

Java - 正则表达式 - 捕获 ""之间的组

c# - 添加属性后如何为 .NET 程序集保留 COM 二进制兼容性?

c# - 无法确定用户的配置路径(尝试获取修订号时)

C# Tabcontrol 捕获 mousedown 事件

.net - windbg 在 dll 函数调用级别调试 outlook 插件

c# - 绑定(bind)到 Canvas

php - 子文件夹中的附加 .htaccess | mod_rewrite 用于查询参数

php - 替换字符串以匹配复数或单数