模式(最好是java)以平方英尺为单位找到地板空间
我有以下需要解析的数据 图案可能(1)约为1000平方英尺(2)c。500平方英尺(3)2100平方英尺 这是我的代码,以找到一个数字,但我需要上述。。。在爪哇模式(最好是java)以平方英尺为单位找到地板空间,java,regex,pattern-matching,Java,Regex,Pattern Matching,我有以下需要解析的数据 图案可能(1)约为1000平方英尺(2)c。500平方英尺(3)2100平方英尺 这是我的代码,以找到一个数字,但我需要上述。。。在爪哇 Pattern regex = Pattern.compile("\\d[\\d,\\.]+"); Matcher finder = regex.matcher(price); if(finder.find()){ try { String value = finder.group(0);
Pattern regex = Pattern.compile("\\d[\\d,\\.]+");
Matcher finder = regex.matcher(price);
if(finder.find()){
try {
String value = finder.group(0);
// do something with value
System.out.println("The floor area is circa " + value + "sq ft";
} catch (NumberFormatException nfe) {
// handle unparseable
System.out.println(nfe.getMessage());
}
}
**编辑以响应Pshemo
我想将数据存储在数据库中,所以在平方英尺或平方英尺或平方英尺或.sq.ft之前需要一个数字,例如,2100平方英尺会给我2100。(可能来自描述等长字符串)您可以对代码进行最小的更改:
- 有多种方法可以从文本中选择数字,你的方法很不错。稍后我会用括号括起来
(\\d[\\d,\\.]+)
- 您指定了两个平方英尺的后缀。它们可能是这样的:
[ ]*(sqft|sq ft)
(approx\\.?|circa|c\\.?)?[ ]*
group
方法提取该组。组0始终是整个匹配表达式,组1是数字,组2是后缀词(sq ft)。选择group(1)
而不是group(0)
将获得您想要的号码
p、 虽然很容易指定前缀,但它完全是可选的,所以我省略了它。如果你把它放进去,它可能看起来像这样:
[ ]*(sqft|sq ft)
(approx\\.?|circa|c\\.?)?[ ]*
我会尝试:
Pattern regex = Pattern.compile("(?<= )\\d(\\d*[,\\.]?\\d+)*(?=[ .]?sq)");
Pattern regex=Pattern.compile((?我几乎放弃了。我的解决方案是,但我将修改模式是:
**为了存储一个数字,修改为最佳模式
String url = "The floor area is 2,100 sq ft";
String url2 = "The floor area is 2,100 sqft";
String url3 = "The floor area is 20,000 square foot";
Pattern.compile("\\d[\\d,\\.]+ (?=[ .]?sq)");
Matcher finder = regex.matcher(url);
if (finder.find()) {
try {
String value = finder.group(0);
Pattern regex2 = Pattern.compile("\\d[\\d,\\.]+");
Matcher finder2 = regex2.matcher(value);
System.out.println(value);
if (finder2.find()) {
String value2 = finder2.group(0);
// do something with value
System.out.println("The floor area is circa " + value2 + " sq
ft");
}
} catch (NumberFormatException nfe) {
// handle unparseable
System.out.println(nfe.getMessage());
}
}
由于我不知道大约1000平方英尺(2)c.500平方英尺(3)2100平方英尺(3)是您想要查找的字符串,还是您想要查找的数据示例列表(1)大约1000平方英尺(2)c.500平方英尺(3)2100平方英尺
,或者您想要的只是像(1)这样的数字大约1000
sq-ft(2)c.500
sqft(3)2100
sq-ftIt似乎非常简单:您有一个可选的前导(“大约”、“c.”等),一个可能用逗号分隔的数字,然后是一个后缀(“sqft”、“sq-ft”等).除了编写替换代码之外,这里还有什么特别有问题的地方吗?@jeff我想我需要一个模式来匹配数字和平方英尺或平方英尺,然后再使用另一个模式来从长描述中获取数字**开始时可能不是大约、大约或c