正则表达式提取URI指定内容:获取xxx与myname
正则表达式提取解决方案
直接用捕获组匹配固定分隔部分就能搞定,不需要复杂的正向预查。
可行的正则表达式
^(?<p0>.*?)PermanentWordChangeWord\.(?<p1>[^.]+)\.
表达式说明
^:锚定字符串开头,确保从最开始匹配(?<p0>.*?):非贪婪匹配,捕获PermanentWordChangeWord之前的所有内容(也就是你要的xxx),命名为p0PermanentWordChangeWord\.:匹配固定的标识字符串和后面的点号(点号需转义,否则会匹配任意字符)(?<p1>[^.]+):匹配第一个点号后到下一个点号前的所有非点号字符(也就是myname),命名为p1\.:匹配myname后的点号,确保只截取到myname为止
代码示例(JavaScript)
const uri = "xxxPermanentWordChangeWord.myname.city.year.age"; const pattern = /^(?<p0>.*?)PermanentWordChangeWord\.(?<p1>[^.]+)\./; const matchResult = uri.match(pattern); if (matchResult) { console.log("提取的xxx:", matchResult.groups.p0); console.log("提取的myname:", matchResult.groups.p1); }
原代码问题说明
你之前用多个可选正向预查的思路绕远了,正向预查是断言逻辑,不会消耗匹配字符,容易导致匹配范围混乱。直接通过固定的分隔字符串(PermanentWordChangeWord和点号)来定位目标内容,逻辑更清晰可靠。
内容的提问来源于stack exchange,提问作者user19728894
相关产品推荐
相关产品推荐

