我刚遇到正则表达式。老实说,正则表达式有时会吓我一跳,但我正在努力学习。所以,我之前曾问过一个问题,现在我又来了另一个问题。我有以下示例数据,我想做的就是在数字前选择所有内容。
read -rp "Prompt: " input >&6
所以我想要的输出是
pencil apple car 15 Nate
beef sun shirt 56 Gaile
face building air 36 Ron
我尝试过这个:
pencil apple car
beef sun shirt
face building air
但这仅选择第一行。感谢您的回答! 编辑:顺便说一句我使用python。
答案 0 :(得分:2)
将匹配项锚定到行首(使用多行标记时,^
是 line 的开始),并匹配非数字:
(?m)^\D*
将匹配项替换为空白以删除它。
更新:
要使所有内容不超过最后一位,但不包括最后一位,请使用向前看:
(?m)^.*(?=\d)
答案 1 :(得分:0)
如果要匹配文本直到遇到这些数字或所有文本,可以使用单词边界\b
和alternation来匹配任何字符,直到遇到单词边界后跟一个数字,请使用正向前瞻,或者不匹配数字或换行。
^(?:.*(?=\b\d)|[^\d\n]+)
如果您想匹配新行,则可以使用\D+
代替[^\d\n]+