1

我正在尝试从纯文本中检测 7 位数字,这是我正在使用的正则表达式。

Regex sevenDigit = new Regex(@"(?<!\d)\d{7}(?!\d)");

现在,我希望能够只匹配那些不以特定前缀开头的 7 位数字。特别是“usr_id”。如何修改此正则表达式以仅匹配不属于 usr_id=1234567 形式的那些?

谢谢!

4

1 回答 1

4

我会这样做:

Regex sevenDigit = new Regex(@"(?<!usr_id=)\b\d{7}\b");

还要注意\b单词边界,这是一种更优雅的表达“数字开头”和“数字结尾”的方式。 它们与您的和环视断言完全不匹配(最值得注意的是,它们不允许匹配您的正则表达式允许匹配的范围)。所以如果你真的需要这种方法,你也可以这样做(?<!\d)(?!\d)1234567abc1234567xyz

Regex sevenDigit = new Regex(@"(?<!\d|usr_id=)\d{7}(?!\d)");
于 2013-01-04T06:45:23.337 回答