Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 如何使用正则表达式提取两个字符串之间的值?_Regex - Fatal编程技术网

Regex 如何使用正则表达式提取两个字符串之间的值?

Regex 如何使用正则表达式提取两个字符串之间的值?,regex,Regex,以下是演示字符串: 前后 假设我知道我想要的值在“之前”和“之后”之间 我想使用正则表达式extact“Value” Pervious909078375639355544之后 假设我知道我想要的值在“pervious90907”和“55544after”之间 我想使用正则表达式extact“83756393” 提前使用thx。尝试以下正则表达式: pervious90907(.*?)55544after 这将得到pervious90907和55544after之间最短的字符串(注意非贪婪的*?

以下是演示字符串:

前后

假设我知道我想要的值在“之前”和“之后”之间 我想使用正则表达式extact“Value”

Pervious909078375639355544之后

假设我知道我想要的值在“pervious90907”和“55544after”之间 我想使用正则表达式extact“83756393”


提前使用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”上进行字符串替换即可。您将保留所需的值。无需正则表达式