当唯一字符串位于2个不同位置时,从较长的字符串中获取唯一字符串

时间:2016-11-25 00:42:59

标签: html regex string dom

在我为其创建测试的Web应用程序中,有两组字符串,我希望从中获取用于在网页上标识该元素的子字符串(这是唯一的):

父母表格:

InputText-eLeType-AQAAAAAAAAAAAAAAAAAAAVWZ-bMs-bms_9999999_3512-bMs-obj-bMsDot-com-bMsDot-bmssolutions-bMsDot-COMPONENT-bMsDot-bms_9999999_109-bMs-textField-bMs-ABNylGGXXu8IPwjI4jMM5y1K

SubForm:

InputText-eLeType-AQAAAAAAAAAAAAAAAAAAAVXJ-bMs-bms_FK_9999999_406_ID-bMs-obj-bMsDot-com-bMsDot-bmssolutions-bMsDot-COMPONENT-bMsDot-bms_9999999_177-bMs-searchLookupField-bMs-ABNylGGXXu8IPwjI4jMM5y1K-bMs-AQAAAAAAAAAAAAAAAAAAAVWZ-bMs-PRIMARY9999999_480-bMs-obj-bMsDot-com-bMsDot-bmssolutions-bMsDot-COMPONENT-bMsDot-bms_9999999_109

我希望使用单个函数从这两个函数中获取子字符串,这样我就不必为我遇到的每种类型创建不同的函数:

上面提供的2个字符串中的子串是:

ABNylGGXXu8IPwjI4jMM5y1K

此子字符串可以针对网页上的每个元素进行更改,但对于页面的每个元素都是唯一的,因此非常有用。

我不能使用完整的字符串,因为它会针对每个环境进行更改,或者如果我生成一个新的环境来托管网页(完整的字符串取决于元数据)。

我们尝试为父表单执行此操作,使用“ - ”作为分隔符并标识最后一个-bMs-然后获取字符串,但这对SubForm不起作用。

所以,我的主要问题是,是否可以创建一些RegEx来从完整字符串中仅提取该字符串(由字母[大写和小写]和数字组成)?或者其他一些更简单的方法来识别那个字符串?

2 个答案:

答案 0 :(得分:0)

您可以尝试positive Lookbehind[A-Z][a-z]的组合。试试这段代码:

(?<=-bMs-)[A-Z]{3}[a-z]\w+

演示:https://regex101.com/r/YUZiFa/1

似乎没有positive Lookbehind

[A-Z]{3}[a-z]\w+

演示:https://regex101.com/r/YUZiFa/2

答案 1 :(得分:0)

如果您乐意根据前一个元素的选择进行选择,那么这可能对您有用:

(?<=searchLookupField-bMs-|textField-bMs-)\w+

Example

如果你想要更加确定,你可以在最后添加第二个预测。

(?<=searchLookupField-bMs-|textField-bMs-)\w+(?=-bMs-|$)

Example

如果这些不起作用,或者整个字符串变化很大,那么更多的例子可以帮助我们缩小范围并提出一个很好的答案!