从字符串中删除长标签尾迹

时间:2018-09-19 15:27:51

标签: regex string

我想要正则表达式,该正则表达式将删除字符串末尾的井号。例如:

  

* WCW * $ 14黑色货车(6号)* $ 8黑色鱼网外套(大号)* $ 6长颈鹿背心(尺寸小)* $ 8牛仔短裤(2号)* $ 6红色透明钱包#platosclosetmooresville #platosclosetlakenorman#转售#温柔地使用#喜欢的#湖人#摩尔诺斯维尔#MVL #LKN #fashionista #recycleyourstyle #cornelius #davidson #concord #kannapolis #statesville #salisbury #bargainista OOTD #WCW

我写了一个正则表达式来匹配主题标签。 /#[#\w\s]*\z/。还尝试了/#[#\w\s]*$/u。但是他们只会返回

  

#lknshopping #mooresvilleshopping #GetCash #SellYourItems #shopping #BargainShopper #ShopLocal #PlatosCloset#长颈鹿#OOTD #WCW

它应该捕获所有以下内容:

  

#platosclosetmooresville #platosclosetlakenorman#转售#gentused#心爱的#lakenorman #mooresville #MVL #LKN #fashionista #recycleyourstyle #cornelius #davidson #concord #kannapolis #statesville#salisburys#bargainista BargainShopper #ShopLocal #PlatosCloset#长颈鹿#OOTD #WCW

解决方案不应与字符串中间的主题标签匹配。

2 个答案:

答案 0 :(得分:1)

正则表达式#[#\w\s]*\z从匹配#开始,然后是character class,它将匹配几个字符中的一个。该字符类被重复零次或多次,因此它也可以匹配###a bc或仅匹配单个开始的#

如果您想匹配作为句子结尾的主题标签,并且之间不能有不是主题标签的单词,则可以使用:

#\w+(?:\s+#\w+)*\z

Regex demo

说明

  • #字面上匹配
  • \w+匹配一个或多个单词字符
  • (?:非捕获组
    • \s+#\w+一次或多次匹配空白字符,后跟#,一次或多次匹配单词字符
  • )*关闭非捕获组并重复零次或多次
  • \z声明字符串的结尾

答案 1 :(得分:0)

我不确定是否要输入每个主题标签字符串:

  • (不带#):(?<=#)[[:alpha:]]*选中this
  • (带#号):#[a-zA-Z]+选中this