匹配匹配符号之间或行尾之间一行中的所有字符

时间:2018-11-30 08:09:26

标签: regex

我想匹配|和行尾之间的所有单词(VEHICLE和所有Vechicle名称)。我不希望多余的行匹配

我已经开始使用此正则表达式,但这不会排除符号|

^\|.*$

因此,我尝试了这种语法,但它遗漏了最后一行:

(?<=\|)(.*)(?=\|)

样品:

我不想匹配的文字

| VEHICLE | Truck | | Bike
| VEHICLE | Car          | | Scooter
| VEHICLE | Sedan | Mini Van    | 
| VEHICLE | Sedan | white, brown, black |     
| VEHICLE | Sedan | pack/cars   | 

下面我不想匹配的文字

4 个答案:

答案 0 :(得分:1)

在中间的|中重复任何字符,但在前行中,|和行的结尾之间交替:

(?<=\|)([^\|]+)(?=\||$)

https://regex101.com/r/YmtEPE/1

请注意,中间可能不需要捕获组,无论如何它等同于整个比赛。

答案 1 :(得分:1)

您可以使用

[^|\s](?:[^|]*[^|\s])?

请参见regex demo

详细信息

  • [^|\s]-除|和空格之外的任何字符
  • (?:[^|]*[^|\s])?-除|以外的任意0+个字符的可选序列,后跟除|和空格之外的任何字符。

答案 2 :(得分:1)

您可以选择:

$(document).ready(function(){
    $('main a').hover(function(){
        alert("Concerts sell out quickly so act fast!");
    });
})

详细信息

  • (?<=\| *)[^|\s]+(?= *\||$) -匹配除空格和[^|\s]+超过1次的所有字符。
  • |-匹配字符串(或启用$标志的行)的结尾。

Demo here

更新:

  

m

答案 3 :(得分:1)

要仅匹配单词,可以首先匹配管道和空格字符。然后捕获一个或多个单词字符,然后使用正号lookahead来检查右侧的字符是空格字符还是字符串的结尾。

您的值在第一个捕获组中。

\|\s(\w+)(?=\s\||$)

说明

  • \|\s匹配|和一个空格字符
  • (\w+)捕获1个以上的空白字符
  • (?=\s\||$)肯定的断言来断言后面是字符串末尾的空白字符

Regex demo

更新

要仅匹配Sublime中的单词(包括匹配的1个以上标签),可以使用:

\|\h+\K\w+(?:[,\/]?\h*\w+)*(?=\h*(?:\||$))

Regex demo

说明

  • \|\h+匹配管道,后接1+个水平空白字符
  • \K忘记当前匹配的内容
  • \w+匹配1个以上的单词字符
  • (?:非捕获组
    • [,\/]?\h*\w+匹配一个可选的逗号或正斜杠,后跟0+乘以水平空白字符和1+单词字符
  • )*关闭非捕获组并重复0次以上
  • (?=积极肯定地断言以下是
    • \h*匹配0+个水平空白字符
    • (?:\||$)匹配管道或字符串的结尾
  • )积极回望