我有一个像这样的字符串:
"Samsung LA32D450 LCD Television 32inch Black"
我需要提取电视的大小,因此需要提取“英寸”和前面的空格之间的所有字符。在这种情况下,我需要该表达式返回32
正则表达式必须能够处理小数点。
例如,我需要此字符串中的32.5
:
"Samsung LA32D450 LCD Television 32.5inch Black"
答案 0 :(得分:2)
您需要匹配数字(可能包括一个点),后跟单词inch
。
您可以使用lookaheads来获取所需的内容:
[\d.]+(?=inch)
这将匹配数字的组合以及点重复1次或更多次并加上单词inch
。
您当然可以通过指定数字的格式来获得更精确的显示。
编辑:
更精确地了解数字格式会带来额外的复杂性。我想出了这个正则表达式,只匹配2-3位数字,后跟“ inch”(23inch
),或者只匹配2-3位数字,后跟一个点,再跟一位数字,再匹配“ inch”({{1} }。它同时使用了先行和否定性回首,因此您的正则表达式引擎应支持以下结构:
23.5inch
答案 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*
这样的数字之后,我进行了快速编辑。它会在数字部分之前寻找空格字符。