我想从字符串的开头开始搜索,但不知道如何搜索。
如果字符串是 >plaplapla>plaplapla(321)
,我想用正则表达式 />.+?\(\d.\)/
获取文本从第一个字符 >
的最后一次出现开始。
例如,如果文本是 >fir5t W0rd$ > $ec0nd here(2) >third here()
,我要提取的文本是 > $ec0nd here( 2)
。
我尝试使用正则表达式 />.+?\(\d.\)/
但它给了我 >fir5t W0rd$ > $ec0nd here(2)
而不是 > $ec0nd here(2)
。
如何修改正则表达式,使其从出现“>”字符的最后位置开始?
最佳答案
因为您的字符串似乎是 >
分隔使用 [^>]
否定字符类而不是 .*?
惰性圆点图案:
/>[^>]+\(\d+\)/
参见 regex demo .注意 />[^>]+?\(\d+\)/
将以类似方式工作,但将匹配第一个 (<DIGITS>)
>
之后的子串.参见 this regex和 the one above .
详情
-
>
- 文字>
-
[^>]+
- 除>
以外的 1 个或多个字符尽可能多 -
\(
- 文字(
-
\d+
- 一位或多位数字 -
\)
- 一个)
符号。
关于javascript - 如何从一开始就进行非贪婪搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46973424/