我试图在最后的正斜杠和点之间提取特定的字符串,但没有成功。我尝试了以下解决方案:R regex for everything between LAST backslash and last dot
以下是完整字符串的示例:
Unchecked assignment: 'android.util.SparseArray' to 'android.util.SparseArray<java.lang.Object>'
我要提取48494,Test,0000,Color,,,htps://url/test/testing/bb/1/dim/green.png
,该值始终在最后一个斜杠和最后一个点之间。我还尝试了以下正则表达式:
"green"
但是这个人在反斜杠之后选择了一切。我想删除最后一个点之后的所有内容,以便仅选择颜色。
编辑:该问题与Get Filename from URL and Strip File Extension不同,因为我正在寻找要由match方法使用的正则表达式而不是替换。
我不能使用replace,因为整个系统已准备好使用match运算符,并且不能更改,因为对于使用regex表达式和match的其他方案,已经存在许多规则。引擎使用匹配而不是替换。
答案 0 :(得分:2)
您可以使用
/[^\/]+(?=\.[^\/.]*$)/
请参见regex demo。
详细信息
[^\/]+
-除/
以外的1个以上的字符(?=\.[^\/.]*$)
-一个正向先行,需要.
,然后在当前字符右边的字符串末尾加上.
和/
以外的0+个字符位置。由于前行是零宽度断言,因此与前行匹配的文本不会添加到整体匹配中。请注意,在JS代码中,您应该注意在RegExp构造函数和正则表达式文字内部使用反斜杠:在前者内部使用双反斜杠,在后者内部使用单反斜杠,/a\/b\d/
= new RegExp("a/b\\d")
(斜杠不是特殊的正则表达式元字符,不需要转义。)
JS演示:
var s = "48494,Test,0000,Color,,,htps://url/test/testing/bb/1/dim/green.png";
console.log(s.match(new RegExp("[^/]+(?=\\.[^/.]*$)")));
console.log(s.match(/[^\/]+(?=\.[^\/.]*$)/));