Regex 正则表达式匹配字符串,直到字符串位于逗号分隔行中
所有单词都以“Passed”开头,但我只想匹配那些以“Unique”结尾的单词Regex 正则表达式匹配字符串,直到字符串位于逗号分隔行中,regex,Regex,所有单词都以“Passed”开头,但我只想匹配那些以“Unique”结尾的单词 我尝试了regexPassed.*并且它匹配所有内容已通过。*Unique不起作用,有人帮忙吗 只需使用以下命令。匹配从过去,然后是一切,直到独一无二 Passed.*Unique if [[ $line =~ Passed.*Unique ]]; then echo line matched $line done; fi 编辑:因为op将他的问题修改为逗号分隔的一行 line=PassedShownWeekUn
我尝试了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:)不幸的是,他编辑了他的帖子,条目用逗号分隔,这不再正确。很酷,看起来你回答了。这匹配了整个输入字符串,因为它只有一行,并且没有唯一性,不会过滤掉单词。是的,因为你中途更改了问题:)