Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 获取模式的最后一个实例_Regex_Powershell - Fatal编程技术网

Regex 获取模式的最后一个实例

Regex 获取模式的最后一个实例,regex,powershell,Regex,Powershell,我需要正则表达式中的帮助,该正则表达式将在一行中获取模式的最后一个实例 有问题的行以以下模式书写(用斜线分隔): /this/is/how/it/look/ 在上面的示例中,我希望得到looks作为输出 请注意,行不是统一的,可以包含比示例更少或更多的字符串 /it/can/be/shorter/ /it/can/ALOW/be/longer/THEN/most/lines/ 对于上面的行,我希望将分别缩短和行。您可以使用\w+(?=/$),这将匹配每行中的姓氏 解释 \w+任意一组“单词字

我需要正则表达式中的帮助,该正则表达式将在一行中获取模式的最后一个实例

有问题的行以以下模式书写(用斜线分隔):

/this/is/how/it/look/
在上面的示例中,我希望得到
looks
作为输出

请注意,行不是统一的,可以包含比示例更少或更多的字符串

/it/can/be/shorter/
/it/can/ALOW/be/longer/THEN/most/lines/
对于上面的行,我希望将
分别缩短

您可以使用
\w+(?=/$)
,这将匹配每行中的姓氏

解释

\w+
任意一组“单词字符a-z、a-z、0-9和389;”

(?=/$)
对“/”进行正向前瞻,后跟字符串结尾

/([^/]*)/$
是你需要的正则表达式

说明:

/#匹配斜杠
(#开始捕获组号1
[^/]*#匹配除斜杠以外的任意数量的字符
)#结束捕获组编号1
/#匹配斜杠
$#匹配字符串末尾的位置

测试它。

如果您使用Powershell,您可以编写如下内容:

$line.TrimEnd("/").Split("/")[-1]
如果确定始终存在尾部斜杠,则可以使用以下选项跳过修剪步骤:

$line.Split("/")[-2]
抽象模式:(这适用于空格,您可以用任何您想要的内容替换第一个“文字字符”)

----/----

(\.[^\]+)(?=$)


干杯

您可能不需要正则表达式,您使用的是什么语言?最后是否总是会有一个
/
呢?在
String
类中是否有
lastIndexOf()
substring()
方法?您使用的是哪种语言?大家好-powershell。最后总会有一个“/”。啊,你每天都会学到新东西。谢谢,这个有用。我不知道[-1]的用法-我认为它是“最后一个实例”的简写形式?@Yad:是的,你可以用-2来表示上一个实例,等等。谢谢蒂姆。我不知道Casimir提出的拆分解决方案(加上我甚至没有指定使用powershell),这正是我问题的答案。