java - 正则表达式 - 在句子中的单位说明符之前选择一个数字

标签 java regex string

我有代表方向的句子,我需要选择为这些方向指定的距离 - 只是数字。以下是示例:

"Head northwest on Lincoln St toward Warbuton Ave 0.1 mi" //0.1
"Head northwest on Middlefield Rd toward Embarcadero Rd 95 ft" //95
"Make a U-turn at Warbuton Ave 0.3 mi" //0.3
"Take the first right onto Embarcadero Rd 12.43 mi" //12.43

可能的单位说明符是“ft”和“mi”。数字本身通常是小数。挑选这些数字的正则表达式是什么?字符串中可能还有其他数字,但通常不是 xy.zw mi 的形式。

我从 \d*\.\d* mi 开始,但如果可能的话,我希望能够在同一表达式中检查 ft。另外,我意识到对于非十进制数,这不起作用......我想需要将小数点和尾随数字设为可选。

最佳答案

您可以使用以下正则表达式..

(\d+(.\d+)?) (mi|ft)

这是一个例子.. ideone

编辑 正如 Ingo 在评论中所建议的那样,一个更好的正则表达式是......

(\d+(.\d+)?)\s*(mi|ft)\b

关于java - 正则表达式 - 在句子中的单位说明符之前选择一个数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17260112/

相关文章:

java - SQL 如何仅返回一些列,例如前 10 列,而不在 SQL 查询中指定它们

javascript - 在正则表达式 Javascript 中获取内部字符串前后的字符串

java - 使用 String.formatter 分隔到不同的行

java - 在 Windows 和 Android 上使用 FTD2xx 驱动程序

Java - HBase 客户端停留在 session 建立完成

java - 理解这段代码

c# - 从字符串中提取一些参数

c# - 需要帮助为此场景创建正则表达式

jquery - 尝试解析 xhr.responseText

c++ - string::reserve 的使用