正则表达式匹配任意单个字符(仅限一个字符)

78

是的,搜索引擎在这方面并不擅长(例如,由于标题过于通用(不具体))。这里有另一个例子(它确实只有一个字母字符):*仅匹配一个字符的正则表达式*。 - Peter Mortensen
这里有一个类似的基本规范问题,答案是 .*:*正则表达式中任意数量字符的符号是什么?* - Peter Mortensen
3个回答

104

匹配任何单个字符

  • 使用点号 . 作为通配符,可匹配任何单个字符。

正则表达式示例:a.c

abc   // match
a c   // match
azc   // match
ac    // no match
abbc  // no match

匹配一组特定字符

  • 使用方括号 [] 匹配任意一个字符集中的字符。
  • 使用 \w 匹配任意一个字母数字字符:0-9a-zA-Z 和下划线 _
  • 使用 \d 匹配任意一个数字字符。
  • 使用 \s 匹配任意一个空白字符。

示例 1 正则表达式: a[bcd]c

abc   // match
acc   // match
adc   // match
ac    // no match
abbc  // no match

示例 2 正则表达式:a[0-7]c

a0c   // match
a3c   // match
a7c   // match
a8c   // no match
ac    // no match
a55c  // no match

匹配任何字符,除了 ...

使用方括号内的插入符号[^]来匹配除了插入符号^后面的任何单个字符。

示例正则表达式:a[^abc]c

aac   // no match
abc   // no match
acc   // no match
a c   // match
azc   // match
ac    // no match
azzc  // no match

(不要混淆这里的 [^] 中的 ^ 与它作为行首字符的其它用法: ^ = 行首, $ = 行尾。)

匹配任意字符(可选)

在任何字符后使用可选字符 ?,以指定该字符出现零次或一次。因此,您可以使用 .? 来匹配任意单个字符(可选)。

示例正则表达式:a.?c

abc   // match
a c   // match
azc   // match
ac    // match
abbc  // no match

另请参见


1
如果我们需要匹配任何单个前导字符,则此方法无效。例如,.bc 将同时匹配 abc 和 aabc。那么在这种情况下,我们如何要求只有一个字符呢? - Dinko Ivanov
2
@DinkoIvanov \b.{1}bc\b 可以做到这一点。 {1} 代表一个,\b 代表单词边界。 - Kolja
这应该是一个解决方案,而不是一份指南。 - juxhin bleta

5

简单回答

如果你想匹配单个字符,把它放在方括号[ ]里。

示例

  • 匹配 + ...... [+] 或 +
  • 匹配 a ...... a
  • 匹配 & ...... &

......等等。你可以在这个网站上在线检查你的正则表达式:https://regex101.com/

(基于评论更新)


1
括号不是必需的。您可以在您提供的网站上确认这一点。加号字符“+”,由于它具有特殊含义,因此可以通过反斜杠进行转义来进行搜索:\+ - Suragch

2
如果您想在任何字符串中搜索单个孤立字符或一组孤立字符,可以使用此方法。
\b[a-zA-Z]\s

这将在字符串中查找所有单个英文字符

同样地,可以使用

\b[0-9]\s

寻找单个数字,例如它会选择9但不选择98等。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接