Regex 正则表达式匹配字符串,直到字符串位于逗号分隔行中

Regex 正则表达式匹配字符串,直到字符串位于逗号分隔行中,regex,Regex,所有单词都以“Passed”开头,但我只想匹配那些以“Unique”结尾的单词 我尝试了regexPassed.*并且它匹配所有内容已通过。*Unique不起作用,有人帮忙吗 只需使用以下命令。匹配从过去,然后是一切,直到独一无二 Passed.*Unique if [[ $line =~ Passed.*Unique ]]; then echo line matched $line done; fi 编辑:因为op将他的问题修改为逗号分隔的一行 line=PassedShownWeekUn

所有单词都以“Passed”开头,但我只想匹配那些以“Unique”结尾的单词


我尝试了regex
Passed.*
并且它匹配所有内容<代码>已通过。*Unique不起作用,有人帮忙吗

只需使用以下命令。匹配从过去,然后是一切,直到独一无二

Passed.*Unique

if [[ $line =~ Passed.*Unique ]]; then echo line matched $line done; fi
编辑:因为op将他的问题修改为逗号分隔的一行

line=PassedShownWeekUnique,PassedShownDayUnique,PassedFailedWeek,PassedFailedDayUnique,Passed1Week,Passed1WeekUnique
REGEX=Passed.*Unique
IFS=','; 
for word in $line; do 
    if [[ $word =~ $REGEX ]]; then 
        echo matched $word
    fi
done
输出:

matched PassedShownWeekUnique
matched PassedShownDayUnique
matched PassedFailedDayUnique
matched Passed1WeekUnique

只需使用以下命令。匹配从过去,然后是一切,直到独一无二

Passed.*Unique

if [[ $line =~ Passed.*Unique ]]; then echo line matched $line done; fi
编辑:因为op将他的问题修改为逗号分隔的一行

line=PassedShownWeekUnique,PassedShownDayUnique,PassedFailedWeek,PassedFailedDayUnique,Passed1Week,Passed1WeekUnique
REGEX=Passed.*Unique
IFS=','; 
for word in $line; do 
    if [[ $word =~ $REGEX ]]; then 
        echo matched $word
    fi
done
输出:

matched PassedShownWeekUnique
matched PassedShownDayUnique
matched PassedFailedDayUnique
matched Passed1WeekUnique

您可以使用正则表达式:

Unique$
要获取以单词“Unique”结尾的行,或:

获取以“Passed”开头,以“Unique”结尾的行。根据具体的实现,您可能需要选择其中一种


如果您有逗号分隔的输入,如您所述:

(Passed.+?Unique),|$

这将捕获以“Passed”开头并以“Unique”结尾的单词的每个实例。您可以检查每个捕获组以打印出匹配的项目。

您可以使用正则表达式:

Unique$
要获取以单词“Unique”结尾的行,或:

获取以“Passed”开头,以“Unique”结尾的行。根据具体的实现,您可能需要选择其中一种


如果您有逗号分隔的输入,如您所述:

(Passed.+?Unique),|$

这将捕获以“Passed”开头并以“Unique”结尾的单词的每个实例。您可以检查每个捕获组以打印出匹配的项目。

您是否尝试使用
^
$

^   Matches the empty string at the beginning of a line; also represents the characters not in the range of a list.

$   Matches the empty string at the end of a line.
像这样的

^已通过。*?唯一$


您可以阅读更多信息。

您是否尝试使用
^
$

^   Matches the empty string at the beginning of a line; also represents the characters not in the range of a list.

$   Matches the empty string at the end of a line.
像这样的

^已通过。*?唯一$



您可以阅读更多信息。

您使用的是哪种语言?您的正则表达式是贪婪的,这意味着在匹配Unique之前,它会尽可能多地匹配。使用
--
传递将其取消冻结。+?Unique
您是否尝试过grep Unique$filename.txt您使用的是哪种语言?您的正则表达式是贪婪的,这意味着在匹配Unique之前尽可能多地匹配它。使用
--
传递将其解除冻结。+?Unique
您是否尝试过grep Unique$filename.txt我意识到我的输入实际上是逗号分隔的:PassedShownWeekUnique、passedshowndanyunique、PassedFailedWeek、PassedFailedDayUnique、Passed1Week、Passed1WeekUnique如何匹配这些内容:(那么,也许你应该编辑你的问题-这是你弄错的一个重要细节。同意,在这种情况下,你要先拆分整行,然后再使用捕获组匹配edit my question以逗号分隔的支持。编辑后的答案仍然匹配输入中的所有内容。整个输入行以“通过”开头,以“唯一”,虽然中间用逗号分隔,但这个答案仍然与整行匹配。我意识到我的输入实际上是逗号分隔的:PasthHOWHONSITION,PassedShownDayUnique,PassiDead Dead周,PassedFailedDayUnique,Passid1周,PaseDealDimaPiximi我将如何匹配这些?(那么,也许你应该编辑你的问题-这是你弄错的一个重要细节。同意,在这种情况下,你要先拆分整行,然后再使用捕获组匹配edit my question以逗号分隔的支持。编辑后的答案仍然匹配输入中的所有内容。整个输入行以“已通过”开头,以“已通过”结尾。)独特的"虽然中间是逗号分隔的,但是这个答案仍然匹配整个行。不幸的是,他编辑了他的文章,这些条目是逗号分隔的,这不再正确。很酷,看起来你回答了。这是匹配整个输入字符串,因为它是一行,并且没有过滤掉没有唯一的单词,因为你改变了midway:)不幸的是,他编辑了他的帖子,条目用逗号分隔,这不再正确。很酷,看起来你回答了。这匹配了整个输入字符串,因为它只有一行,并且没有唯一性,不会过滤掉单词。是的,因为你中途更改了问题:)