我想匹配|
和行尾之间的所有单词(VEHICLE和所有Vechicle名称)。我不希望多余的行匹配
我已经开始使用此正则表达式,但这不会排除符号|
:
^\|.*$
因此,我尝试了这种语法,但它遗漏了最后一行:
(?<=\|)(.*)(?=\|)
样品:
我不想匹配的文字
| VEHICLE | Truck | | Bike
| VEHICLE | Car | | Scooter
| VEHICLE | Sedan | Mini Van |
| VEHICLE | Sedan | white, brown, black |
| VEHICLE | Sedan | pack/cars |
下面我不想匹配的文字
答案 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次的所有字符。|
-匹配字符串(或启用$
标志的行)的结尾。更新:
m
答案 3 :(得分:1)
要仅匹配单词,可以首先匹配管道和空格字符。然后捕获一个或多个单词字符,然后使用正号lookahead来检查右侧的字符是空格字符还是字符串的结尾。
您的值在第一个捕获组中。
\|\s(\w+)(?=\s\||$)
说明
\|\s
匹配|
和一个空格字符(\w+)
捕获1个以上的空白字符(?=\s\||$)
肯定的断言来断言后面是字符串末尾的空白字符更新:
要仅匹配Sublime中的单词(包括匹配的1个以上标签),可以使用:
\|\h+\K\w+(?:[,\/]?\h*\w+)*(?=\h*(?:\||$))
说明
\|\h+
匹配管道,后接1+个水平空白字符\K
忘记当前匹配的内容\w+
匹配1个以上的单词字符(?:
非捕获组
[,\/]?\h*\w+
匹配一个可选的逗号或正斜杠,后跟0+乘以水平空白字符和1+单词字符)*
关闭非捕获组并重复0次以上(?=
积极肯定地断言以下是
\h*
匹配0+个水平空白字符(?:\||$)
匹配管道或字符串的结尾)
积极回望