如下字符:
$12-16$
$ 88-99$
$ 12-67 $
$9-0]$
我写的这个正则:
\$\d+.*-\d+.*$
只能匹配
$12-16$
$9-0]$
最终目的是想匹配两个$号之间的内容(包括$本身),
但有些比较特殊,开始$之后,也许可能存在空白,如:$ 88-99$,
结束的$之前,也许也有空白,如:$ 12-67 $
这种有空白的“或许”的正则,写不出来,麻烦各位高手赐教,谢谢!
1
daquandiao2 2020-02-12 15:49:02 +08:00
\$\s*\d+-\d+.*\$
|
2
asionbo 2020-02-12 15:49:32 +08:00
这样的?
\$.*\$ |
3
Hyseen 2020-02-12 15:50:28 +08:00
\$.*\$
|
4
b1iy 2020-02-12 16:05:19 +08:00
不是很确定你完整的需求。\s 是匹配空格,\S 是匹配非空格,不确定空格数量就可以 \s* ,你自己推导下
具体参考 https://deerchao.cn/tutorials/regex/regex.htm 实现 |
5
uti6770werty OP 谢谢各位~
"\$.*\$" 的方式比较粗暴,会误匹配(像:$测试文字$),所以我才需要增加\d 和匹配有“-”符号来降低误匹配的可能性 @b1iy \s*也不适合,有情况是:没有空格,如上面的$12-16$,这个是紧凑型了 就是有\s*或者没有\s,两种情况都要兼顾。。。 |
6
uti6770werty OP 或的关系,按教学网页,应该是|符号
尽管我试过用 \$[\s*|]\d+.*-\d+.*$ \$(\s*|)\d+.*-\d+.*$ 始终不成。。。 |
7
eason1874 2020-02-12 18:19:33 +08:00
你这长篇大论都没说到关键点,我看你帖子描述跟上面回复一样,误以为你匹配$$之间所有内容,看你回复才发现你要匹配的不包括中文。
你应该说明$$可能有什么内容,允许什么内容,不允许什么内容,要匹配什么内容。给你几个例子: 一、$$之间包括空格、数字: /\$(?:\s|[0-9])+\$/ 二、$$之间包括空格、-、数字: /\$(?:\s|\-|[0-9])+\$/ 三、$$之间包括空格、-、]、数字: /\$(?:\s|\-|\]|[0-9])+\$/ 自己举一反三吧。 |
8
lysS 2020-02-12 18:52:23 +08:00 via Android
禁用贪婪
|
9
mxalbert1996 2020-02-13 00:41:58 +08:00 via Android
你连你到底相匹配什么都不说清楚让我们猜呢?
|
10
mxalbert1996 2020-02-13 00:47:55 +08:00 via Android
提示一下,匹配任意数量(包括 0 )空白字符用 \s* 就行
|