Regex 如何使用正则表达式提取两个字符串之间的值?
以下是演示字符串: 前后 假设我知道我想要的值在“之前”和“之后”之间 我想使用正则表达式extact“Value” Pervious909078375639355544之后 假设我知道我想要的值在“pervious90907”和“55544after”之间 我想使用正则表达式extact“83756393”Regex 如何使用正则表达式提取两个字符串之间的值?,regex,Regex,以下是演示字符串: 前后 假设我知道我想要的值在“之前”和“之后”之间 我想使用正则表达式extact“Value” Pervious909078375639355544之后 假设我知道我想要的值在“pervious90907”和“55544after”之间 我想使用正则表达式extact“83756393” 提前使用thx。尝试以下正则表达式: pervious90907(.*?)55544after 这将得到pervious90907和55544after之间最短的字符串(注意非贪婪的*?
提前使用thx。尝试以下正则表达式:
pervious90907(.*?)55544after
这将得到
pervious90907
和55544after
之间最短的字符串(注意非贪婪的*?
量词),请尝试以下正则表达式:
pervious90907(.*?)55544after
这将得到
pervious90907
和55544after
之间最短的字符串(注意非贪婪的*?
量词)。答案取决于两件事:
- 如果您确切地知道该值由什么组成(如果您知道它将是数字等,这会使它更容易)。如果可能的话,答案就更难了
- 如果系统默认为贪婪/不贪婪,则会影响设置表达式的方式。我假设它默认是贪婪的
*
切换为取消冻结,因为“*
”也匹配“After”:
如果您知道它是数字:
/before(\d*)After
如果可以是任何单词字符(0-9,a-z,a-z,uz):
答案取决于两件事:
- 如果您确切地知道值由什么组成(如果您知道它将是数字等,这会使它更容易)。如果它可以是任何内容,那么答案就更难了
- 如果您的系统默认为贪婪/不贪婪,则会影响您设置表达式的方式。我将假定它默认为贪婪
*
切换为取消冻结,因为“*
”也匹配“After”:
如果您知道它是数字:
/before(\d*)After
如果可以是任何单词字符(0-9,a-z,a-z,uz):
正则表达式应该是这样的:
previous([0-9]*)after
正则表达式应该是这样的:
previous([0-9]*)after
bash-3.2$echo pervious909078375639355544after | perl-ne'print“$1\n”if/pervious90907(.*)55544after/'
83756393
bash-3.2$echo pervious909078375639355544after | perl-ne'print“$1\n”if/pervious90907(.*)55544after/'
83756393
如果我想限制结果仅为数字,我能做什么?将
替换为[0-9]
,因此[0-9]*?
@Tattat:\d查看我的答案了解更多信息。如果我想限制结果仅为数字,我能做什么?将
替换为[0-9]
,因此[0-9]*?
@Tattat:\d有关更多信息,请参见我的答案。\w
包含的单词字符比0
-9
,a
-z
,a
-z
和
@Gumbo更多,这取决于您使用的平台\w
包含的单词字符比0
--多a
-z
、a
-z
和
@Gumbo,这取决于您使用的平台。您只需在“Pervious907”和“55544after”上进行字符串替换即可。您将保留所需的值。无需正则表达式您只需在“Pervious907”和“55544after”上进行字符串替换即可。您将保留所需的值。无需正则表达式