我正在解析一系列具有各种格式的字符串。最后遇到的边缘情况让我难住了。我不是一个出色的正则表达式专家,相信我,达到这一点是一个挑战。
以下是我尝试解析的字符串中的关键片段。第二个例子是我目前遇到的边缘情况。
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/