- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在我的应用程序中,用户可以自定义测量单位,因此如果他们想以分米而不是英寸或整圈而不是度来工作,他们可以。但是,我需要一种方法来解析包含多个值和单位的字符串,例如 1' 2" 3/8
。我在 SO 上看到了一些正则表达式,但没有找到与英制系统的所有情况相匹配的正则表达式,更不用说允许任何类型的单位了。我的目标是尽可能拥有最宽松的输入框。
所以我的问题是: 如何以最用户友好的方式从字符串中提取多个值单位对?
我想出了以下算法:
''
替换为 "
。 ((\d+('|''|"|m|cm|mm|\s|$) *)+(\d+(\/\d+)?('|''|"|m|cm|mm|\s|$) *)?)|((\d+('|''|"|m|cm|mm|\s) *)*(\d+(\/\d+)?('|''|"|m|cm|mm|\s|$) *))
最佳答案
My objective is to have the most permissive input box possible.
How can I extract multiple value-unit pairs from a string? I guess I could use string manipulation functions to do most of this, but I feel like there must be a simpler way through regex.
I've never used regex capturing though, so I'm not so sure how I'll manage to extract the values out of this mess.
g
) 标志,则可用于在同一字符串中查找多个匹配项。如果您有一个可以找到单个单位值对的正则表达式,这将非常有用。在 JavaScript 中,您可以使用
string.match(regex)
检索匹配列表。但是,该函数会忽略全局正则表达式上的捕获组。
regex.exec(string)
。对于每个成功的匹配,
exec
函数将返回一个数组,其中项目
0
是整个匹配项,项目
1
及以后是捕获的组。
/(\d+) ([a-z]+)/g
将查找一个整数,后跟一个空格和一个单词。如果你连续调用
regex.exec("1 hour 30 minutes")
你会得到:
["1 hour", "1", "hour"]
["30 minutes", "30", "minutes"]
null
regex.lastIndex
获取或设置。在使用不同的输入再次使用正则表达式之前,您应该将其设置回 0。
a|b
)并将量词应用于字符序列(例如
(abc)+
)。如果您想在不创建捕获组的情况下执行此操作,则可以改用
(?: )
。这称为非捕获组。它与正则表达式中的常规括号做同样的事情,但它里面的东西不会在返回的数组中创建一个条目。
Is there a better way to approach this?
/ (\s+) // 1 whitespace
| (\d+)\/(\d+) // 2,3 fraction
| (\d*)([.,])(\d+) // 4,5,6 decimal
| (\d+) // 7 integer
| (km|cm|mm|m|ft|in|pi|po|'|") // 8 unit
/gi
很抱歉奇怪的语法突出显示。我使用空格使其更具可读性,但正确格式化它变成:
/(\s+)|(\d+)\/(\d+)|(\d*)([.,])(\d+)|(\d+)|(km|cm|mm|m|ft|in|pi|po|'|")/gi
这个正则表达式巧妙地利用了由 OR 子句分隔的捕获组。只有一种 token 的捕获组将包含任何内容。例如,在字符串
"10 ft"
上,对
exec
的连续调用将返回:
["10", "", "", "", "", "", "", "10", ""]
(因为“10”是一个整数) [" ", " ", "", "", "", "", "", "", ""]
(因为“”是空格)["ft", "", "", "", "", "", "", "", "ft"]
(因为“ft”是一个单位) null
function tokenize (input) {
const localTokenRx = new RegExp(tokenRx);
return function next () {
const startIndex = localTokenRx.lastIndex;
if (startIndex >= input.length) {
// end of input reached
return undefined;
}
const match = localTokenRx.exec(input);
if (!match) {
localTokenRx.lastIndex = input.length;
// there is leftover garbage at the end of the input
return ["garbage", input.slice(startIndex)];
}
if (match.index !== startIndex) {
localTokenRx.lastIndex = match.index;
// the regex skipped over some garbage
return ["garbage", input.slice(startIndex, match.index)];
}
const [
text,
whitespace,
numerator, denominator,
integralPart, decimalSeparator, fractionalPart,
integer,
unit
] = match;
if (whitespace) {
return ["whitespace", undefined];
// or return next(); if we want to ignore it
}
if (denominator) {
return ["fraction", Number(numerator) / Number(denominator)];
}
if (decimalSeparator) {
return ["decimal", Number(integralPart + "." + fractionalPart)];
}
if (integer) {
return ["integer", Number(integer)];
}
if (unit) {
return ["unit", unit];
}
};
}
这个函数可以在一个地方完成所有必要的字符串操作和类型转换,让另一段代码对标记序列进行适当的分析。但这超出了这个 Stack Overflow 答案的范围,特别是因为这个问题没有指定我们愿意接受的语法规则。
关于javascript - 如何解析和捕获任何度量单位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29434666/
背景信息:对于国际销售表中的每一行,我需要检索过去特定日期的美元汇率,以便分析人员确定汇率变化的影响关于销售数字。然后,我将使用今天的汇率与过去的汇率之间的差值,并将其乘以销售额来确定影响。 实际问题
是否可以通过切片器值动态选取表中定义的适当 DAX 度量? 源表: +----------------+------------+ | col1 | col2 | +-
我有一个 ViewFlipper在我的主要 Activity View 上。在 onCreate 我实例化添加到 ViewFlipper 的 View 。之后,我将显示的 child 设置为第一个。当
我正在研究句子类别检测问题。每个句子可以属于多个类别例如: "It has great sushi and even better service." True Label: [[ 0. 0.
谁能帮我一起计算F-measure?我知道如何计算召回率和准确率,但不知道对于给定的算法如何计算一个 F-measure 值。 例如,假设我的算法创建了 m 个集群,但我知道相同数据有 n 个集群(由
我对通过宏精度和手动召回计算宏 f1-score 感兴趣。但结果并不相等。代码中 f1 和 f1_new 的最终公式有什么区别? from sklearn.metrics import precisi
我有一张记录了一些人体重的表格: Year Person Weight 2010 Mike 75 2010 Laura 60 2011 Mike 80 201
df分为训练数据帧和测试数据帧。训练数据帧分为训练数据帧和测试数据帧。因变量Y是二进制(因子),值为 0 和 1。我试图用此代码(神经网络,插入符号包)预测概率: library(caret) mod
我想使用 Hausdorff 距离作为训练指标,但我刚刚找到了 Weighted_Hausdorff_loss并将其用作医学图像分割的指标。 import math import numpy as n
我有一段时间没有使用 R,所以也许我只是不习惯它,但是..我在 R 中有一个表,有两个列,第一个有预测值(值可以是 0 或 1 ),第二个具有实际值(也是 0 或 1)。我需要找到召回率、精度和 f
我正在使用 Collectd 收集系统指标。我正在小范围内收集测量值以获得准确的值。但是我想使用 Statsd 在本地聚合这些值。 Statsd 应该聚合这些值并以更长的时间间隔将它们发送到 libr
我使用SciKit作为一个库来处理分类算法,例如:NB、SVM。 这是一个非常漂亮的binary classification implementation对于“垃圾邮件和HAM”电子邮件:
我正在寻找 MST 启发式算法的严格示例,它是度量旅行商问题的 2 近似算法。 这个算法在网上很容易找到,但我找不到具体的例子。我所说的严格示例是指给定算法返回的解决方案比最佳解决方案差 2 倍的示例
我使用 Data Studio 中的 Case 函数来确定某个值是否高于或低于 6,000 英镑,并根据输出呈现两个数字之一。这两个数字是计算字段。 第一个案例陈述: (大于或小于)- CASE WH
我正在使用 Ganglia + RRDTool为 monitoring a web farm .很多图很清楚,但是当我看到load_one metric , 我 don't have Y-axis l
以下是股票交易数据的简化版本。 StockData = DATATABLE ( "STOCK", STRING, "Date", DATETIME, "Buyer", STRI
我正在尝试将ASP.NET Core 7应用程序中的度量/跟踪发送到Grafana。。这是我的《码头工人》作文文件。。下面是我的收集器配置:。下面是配置OpenTelemeter的服务集合扩展方法。。
我正试图从我的ASP.NET Core 7应用程序向Grafana发送度量/跟踪。。这是我的《码头工人》作文文件。。下面是我的收集器配置:。下面是配置OpenTelemeter的服务集合扩展方法。。首
我是一名优秀的程序员,十分优秀!