Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/237.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
PHP正则表达式在文本之前获取数字_Php_Regex_Match - Fatal编程技术网

PHP正则表达式在文本之前获取数字

PHP正则表达式在文本之前获取数字,php,regex,match,Php,Regex,Match,有人能帮我用php编写正则表达式吗 这是我的正则表达式: (?:\d*(\,)\d*)(\,\d*)?(\,\d*)?(\,\d*)? 这是我的测试数据: 1~2906730 RX 1-'2733975 Rx /132882 RX mu UU Au '2(*u 182/rX….212 我需要匹配“RX”或“RX”或“RX”之前的数字。 在上面的代码中,最后一行中的数字不匹配,因为它缺少一个“,” 我相信有更好的方法可以做到这一点。现在我的正则表达式甚至没有检查它后面是否跟有“RX” 任何帮助都

有人能帮我用php编写正则表达式吗

这是我的正则表达式:

(?:\d*(\,)\d*)(\,\d*)?(\,\d*)?(\,\d*)?
这是我的测试数据:

1~2906730 RX

1-'2733975 Rx

/132882 RX mu UU Au

'2(*u 182/rX….212

我需要匹配“RX”或“RX”或“RX”之前的数字。 在上面的代码中,最后一行中的数字不匹配,因为它缺少一个“,”

我相信有更好的方法可以做到这一点。现在我的正则表达式甚至没有检查它后面是否跟有“RX”

任何帮助都将不胜感激!
解决方案可能会以php代码发布。

我认为这样做可以:

preg_match('/\d{1,3}(?:,\d{3}+)*(?= rx)/i', $data, $match);
?=
是一个——它要求前面的regexp后面跟这个组。并且
i
使regexp不区分大小写,因此它将匹配
RX
RX
或任何组合


我认为这样做可以:

preg_match('/\d{1,3}(?:,\d{3}+)*(?= rx)/i', $data, $match);
?=
是一个——它要求前面的regexp后面跟这个组。并且
i
使regexp不区分大小写,因此它将匹配
RX
RX
或任何组合


我认为这样做可以:

preg_match('/\d{1,3}(?:,\d{3}+)*(?= rx)/i', $data, $match);
?=
是一个——它要求前面的regexp后面跟这个组。并且
i
使regexp不区分大小写,因此它将匹配
RX
RX
或任何组合


我认为这样做可以:

preg_match('/\d{1,3}(?:,\d{3}+)*(?= rx)/i', $data, $match);
?=
是一个——它要求前面的regexp后面跟这个组。并且
i
使regexp不区分大小写,因此它将匹配
RX
RX
或任何组合



您不需要转义逗号。匹配任何数字和点的组合(最简单的方法)都可以使用
[\d.]+
可以按字面或用
\s
标注空格,结尾的文字
RX
可以使用
/i
不区分大小写标志。不需要转义逗号。匹配任何数字和点的组合(最简单的方法)可以用
[\d]完成+
可以按字面或用
\s
标注空格,结尾的文字
RX
可以使用
/i
不区分大小写标志。不需要转义逗号。匹配任何数字和点的组合(最简单的方法)可以用
[\d]完成+
可以按字面或用
\s
标注空格,结尾的文字
RX
可以使用
/i
不区分大小写标志。不需要转义逗号。匹配任何数字和点的组合(最简单的方法)可以用
[\d]完成+
,空格可以按字面或用
\s
标注,末尾的文字
RX
可以使用
/i
不区分大小写标志。如果逗号用作千位分隔符,更好的正则表达式将是
“/\\d{1,3}(?:,\\d{3})*(?=RX)/i”但我承认这个问题的作者已经不清楚了。@ SharanyaDutta Thx。你不需要在单引号串中加倍反斜杠。我把正则表达式写为双引号字符串。你可以考虑使用<代码> PrggMatMatHyLo.<代码>而不是<代码> PrggMatals<代码>。所有匹配值,不仅仅是第一个。我不知道OP是一次处理所有输入数据还是逐行处理输入数据。似乎他的主要问题是正确使用regexp,而不是使用它的PHP语法。在匹配
str_replace()后,可以删除逗号
。如果将逗号用作千位分隔符,则更好的正则表达式是“/\\d{1,3}(?:,\\d{3})*(?=rx)/i”但我承认这个问题的作者已经不清楚了。@ SharanyaDutta Thx。你不需要在单引号串中加倍反斜杠。我把正则表达式写为双引号字符串。你可以考虑使用<代码> PrggMatMatHyLo.<代码>而不是<代码> PrggMatals<代码>。所有匹配值,不仅仅是第一个。我不知道OP是一次处理所有输入数据还是逐行处理输入数据。似乎他的主要问题是正确使用regexp,而不是使用它的PHP语法。在匹配
str_replace()后,可以删除逗号
。如果将逗号用作千位分隔符,则更好的正则表达式是“/\\d{1,3}(?:,\\d{3})*(?=rx)/i”但我承认这个问题的作者已经不清楚了。@ SharanyaDutta Thx。你不需要在单引号串中加倍反斜杠。我把正则表达式写为双引号字符串。你可以考虑使用<代码> PrggMatMatHyLo.<代码>而不是<代码> PrggMatals<代码>。所有匹配值,不仅仅是第一个。我不知道OP是一次处理所有输入数据还是逐行处理输入数据。似乎他的主要问题是正确使用regexp,而不是使用它的PHP语法。在匹配
str_replace()后,可以删除逗号
。如果将逗号用作千位分隔符,则更好的正则表达式是“/\\d{1,3}(?:,\\d{3})*(?=rx)/i”但我承认这个问题的作者已经不清楚了。@ SharanyaDutta Thx。你不需要在单引号串中加倍反斜杠。我把正则表达式写为双引号字符串。你可以考虑使用<代码> PrggMatMatHyLo.<代码>而不是<代码> PrggMatals<代码>。所有匹配值,不仅仅是第一个。我不知道OP是一次处理所有输入数据还是逐行处理输入数据。似乎他的主要问题是正确使用regexp,而不是使用它的PHP语法。在匹配
str_replace()
后,可以删除逗号。