正则表达式提取空格和字符串之间的字符

时间:2018-10-19 09:49:55

标签: r regex

我有一个像这样的字符串:

"Samsung LA32D450 LCD Television 32inch Black"

我需要提取电视的大小,因此需要提取“英寸”和前面的空格之间的所有字符。在这种情况下,我需要该表达式返回32

正则表达式必须能够处理小数点。 例如,我需要此字符串中的32.5

"Samsung LA32D450 LCD Television 32.5inch Black"

3 个答案:

答案 0 :(得分:2)

您需要匹配数字(可能包括一个点),后跟单词inch

您可以使用lookaheads来获取所需的内容:

[\d.]+(?=inch)

这将匹配数字的组合以及点重复1次或更多次并加上单词inch

您当然可以通过指定数字的格式来获得更精确的显示。

编辑

更精确地了解数字格式会带来额外的复杂性。我想出了这个正则表达式,只匹配2-3位数字,后跟“ inch”(23inch),或者只匹配2-3位数字,后跟一个点,再跟一位数字,再匹配“ inch”({{1} }。它同时使用了先行和否定性回首,因此您的正则表达式引擎应支持以下结构:

23.5inch

Regex 101

答案 1 :(得分:0)

尝试以下操作:

library(stringr)
a <- "Samsung LA32D450 LCD Television 32.1inch Black"
str_extract(a, "[:graph:]*(?=inch)")

[:graph:]匹配字母,数字或标点符号,但不匹配空格。

?= inch匹配后跟“ inch”的所有内容。

祝你好运

Ludo

答案 2 :(得分:0)

$(document).ready(function(){
$("input").click(function(){
        $(this).next().show();
        $(this).next().hide();
    });

});
<!DOCTYPE html>
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
</head>
<body>
<input list="brow">
<datalist id="brow">
  <option value="Internet Explorer">
  <option value="Firefox">
  <option value="Chrome">
  <option value="Opera">
  <option value="Safari">
</datalist>  
</body>
</html>

它与(?<=\s)(\d+\.?\d*)(?=inch) 之前的部分匹配。 inch部分匹配小数部分,然后匹配一个可选的\d+。之后,它会使用.查找小数部分。

意识到它接受像\d*这样的数字之后,我进行了快速编辑。它会在数字部分之前寻找空格字符。

https://regex101.com/r/tionn9/2