我有这个字符串:第一个月
还有这个regex:/\S*\$\$?[^$]*\$\$?\S*/gi
个
我觉得应该匹配所有的短语内单或双美元符号$以及任何文字,围绕它。所以理想情况下,它应该是$xy$-plane.
和$f(x, y)$
但出于某种原因它匹配:$xy$-plane. The slope of each line segment is given by the value of $f(x,
个
有人知道我做错了什么吗?或者这里发生了什么?
我希望它匹配$xy$-plane。和$f(x,y)$但它不是
4条答案
按热度按时间rxztt3cl1#
因为regex默认情况下采用最长的匹配,所以您必须通过添加
?
来告诉*
“懒惰”。字符串
建议使用regexr.com:一个很好的网站,你可以在上面测试你正在使用的正则表达式
你也可以像这样简化你的正则表达式
型
这是因为
\S*
也可以捕获“外部”$
,因此$$hey$$ciao
无论如何都会匹配。ivqmmu1c2#
也许你需要这样的smth
第一个月
这将抓取美元符号内的所有文本和周围的文本,而不是空白。
qco9c6ql3#
你会想要这样的东西:
字符串
[^\s$]*
-匹配零个或多个非空格字符和开头美元符号前的非美元符号字符\$
-开头美元符号[^$]+
-一个或多个非美元符号\$
-结束美元符号[^\s$]*
-零个或多个非空格和非美元符号字符https://regex101.com/r/ws0mn0/1
型
jyztefdp4#
将正则表达式改为
/[^\s$]*\$[^$]+\$[^\s$]*/gi
。它匹配您希望它根据regex101匹配的内容:的数据