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使用“特色”一词(或其缩写)来定位额外的艺术家姓名(如有)。