Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.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
C# 如何检查单词是否位于字符串的末尾?_C#_Regex - Fatal编程技术网

C# 如何检查单词是否位于字符串的末尾?

C# 如何检查单词是否位于字符串的末尾?,c#,regex,C#,Regex,我今天学习了正则表达式,并快速表达了自己的想法 ([\s]+\(?fe?a?t(?:uring)?\.?[\s]*) 这与歌曲文件名的“特色”部分相匹配 e、 g 艺术家-以第二名达特为特色的标题 或 艺术家-标题ft 2ndArtist 或 艺术家-头衔壮举。第二个数据列表 我可以向表达式中添加什么来阻止它与文件名匹配,例如: 艺术家-我有冷酷的技艺 ?为此,我最好使用这种方法。您可以使用Trim()方法删除所有空白: bool result = myString.Trim().EndsWi

我今天学习了正则表达式,并快速表达了自己的想法

([\s]+\(?fe?a?t(?:uring)?\.?[\s]*)
这与歌曲文件名的“特色”部分相匹配

e、 g

艺术家-以第二名达特为特色的标题

艺术家-标题ft 2ndArtist

艺术家-头衔壮举。第二个数据列表

我可以向表达式中添加什么来阻止它与文件名匹配,例如:

艺术家-我有冷酷的技艺

为此,我最好使用这种方法。您可以使用
Trim()
方法删除所有空白:

bool result = myString.Trim().EndsWith(”Artist”);

您可以将模式“锚定”到行的末尾,但必须小心在锚定之前使用通配符匹配,如。*

另一种看待问题的方式,你想要匹配的是“特征”在中间。所以字符,一个空格,“特色”,一个空格,然后是一些字符。所以我会这样构造我的正则表达式:

var pattern = @"(.*) (ft\.?|feat\.?|featuring) (.*)";
这将使一场比赛分为三个部分,或仅对整个比赛:

var pattern = @"(.* (?:ft\.?|feat\.?|featuring) .*)";

请注意,@before字符串避免了转义反斜杠的需要。

这个问题已经回答了很多次(显然在文档中提供了),但很快就会有人给您提供复制粘贴就绪的答案……只需将
(?!$)
添加到正则表达式的末尾即可。它还可以进一步改进,但多亏了4个castle,我该如何扩展它以不捕捉空白?“艺术家”、“头衔”和“第2个达特”只是占位符;实际姓名将不会事先知道。OP使用“特色”一词(或其缩写)来定位额外的艺术家姓名(如有)。