我有这样的段落:
"{~1.6} This is another paragraph {~1} with curly braces.{~6.8}"
我要匹配{~<int or float>}
到目前为止,我已经得到了这个正则表达式:/\{(\~(\d*\.?\d+),?)\}/g
它工作正常,但有时会在~<int or float>
之前或之后出现一些其他字符,如下所示:
"{:.class ~1.6 #id} This is another paragraph {~1 .class #id} with curly braces.{:#id ~6.8}"
我不知道~<int or float>
之前或之后的内容,我只知道所有内容都在花括号之间。
如何匹配每个{<some content here>}
,只要它至少包含一个~<int or float>
出现?
4条答案
按热度按时间x9ybnkn61#
匹配大括号,任意数量的非大括号字符,然后匹配您感兴趣的位(波浪号和数字,可选小数点和小数位),然后可能匹配更多的非大括号字符,最后匹配右大括号。regex101
注意,在JavaScript中,大括号不需要转义,除非它包含一个有效的量词(用逗号分隔的数字或数字对,可能缺少一个数字),尽管这并没有什么坏处;波浪号根本不需要转义。
9rygscc12#
你可以试试这个
h22fl7wq3#
你可以在
~number
周围加上不包括对括号的类,像这样:示例here。
3lxsmp7m4#
要删除花括号外的所有字符,可以使用以下正则表达式:
\{[^{}]*\}
此模式将采用您的示例字符串并输出以下内容:
"{~1.6}{~1}{~6.8}"
"{:.class ~1.6 #id}{~1 .class #id}{:#id ~6.8}"
上面的模式更简单,但如果还需要忽略空大括号(即
{}
),则可以使用此表达式\{[^{}]*\}(?=[^{}]*\{[^{}]*\})