javascript - 如何在尝试使用正则表达式获取两个字符之间的所有数字(包括小数)时处理边缘情况

标签 javascript regex

我正在解析一系列具有各种格式的字符串。最后遇到的边缘情况让我难住了。我不是一个出色的正则表达式专家,相信我,达到这一点是一个挑战。

以下是我尝试解析的字符串中的关键片段。第二个例子是我目前遇到的边缘情况。

LBP824NW2-58.07789x43.0-207C72
LBP824WW1-77.6875 in. x 3.00 in. 24VDC

我试图获取构成字符串中维度宽度部分的所有数字(包括小数)(这将是维度中的第一个数字)。在其他情况下,有效的方法是使用以下表达式获取从“-”到“x”的所有数字:

/-(\d+\.?\d+?)x\B/

但是,这不能处理尺寸中包含英寸的情况。我想过使用“前瞻”或“后视”,但我很困惑。任何建议,将不胜感激。

最佳答案

RegEx 可以使用 (...)? 语法来查找“零个或一个”事物,因此,如果您的模式已经可以工作,但它会被新模式混淆,那么有“更多的字符串数据嵌入到相同的模式中”,您可以添加零或一检查,您应该可以开始了。

在这种情况下,在一些战术位置放置类似 (\s*in\.?\s*)? 的内容来匹配“任意数量的空格(包括无),后跟 in 后跟一个可选的句号,后跟任意数量的空格(包括无空格)”,否则什么都不起作用。

也就是说,“我无法更改格式”几乎从来都不是一个论据,因为虽然您无法更改格式,但您几乎总是可以更改解析它的内容。 RegEx 可能就足够了,但是一些代码检查它是什么类型的一般模式,然后调用适当的函数来标记和检查特定的字符串模式应该是很有可能的。除非您受雇来更新某些包含 grep 的预定义 CLi 脚本,并且不允许您触摸除模式之外的任何内容...

关于javascript - 如何在尝试使用正则表达式获取两个字符之间的所有数字(包括小数)时处理边缘情况,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51717252/

相关文章:

javascript - 数组推送正在覆盖之前推送的数据

javascript - 当旁边的 div 被移除时,div 会继续移动

javascript - 在angularJS中绑定(bind)服务数据

python - 使用 python re.compile 和 beautiful soup 来匹配字符串

javascript 标记字符串以清理文本

javascript - 在 highcharts 工具提示中附加第三个 `<td>` 值

javascript - 用于分页的 AngularJS 中的限制和偏移数据结果

Python:检查列表中至少一个正则表达式是否与字符串匹配的优雅方法

c# - 如何使用正则表达式提取带引号的字符串?或者如何在 c# 中使用这个特定的正则表达式 ("[^"]*\.csv")?

regex - 在 R 函数的 list.files 中使用正则表达式