gpt4 book ai didi

javascript - 在字符串中查找字符,但更喜欢使用 NFA 而不进行原子分组的连续字符

转载 作者:行者123 更新时间:2023-11-28 20:18:15 25 4
gpt4 key购买 nike

我正在尝试创建一个正则表达式来查找字符串中任意位置的字符。我更希望他们首先找到连续的字符。

让我举个例子,假设s = '这是一个测试测试字符串'并且我正在搜索tst我会想像这样找到它:

// Correct
// v vv
s = 'this is a test test string'

而不是:

// Incorrect
// v v v
s = 'this is a test test string'
<小时/>

另外,如果 s = '这是一个测试测试 tst 字符串'

// Correct
// vvv
s = 'this is a test test tst string'

需要注意的几点:

  • 搜索字符由用户提供(在本例中为tst)
  • 我使用的是 javascript,所以我无法支持 atomi 分组,我怀疑这会让这变得更容易

我最好的尝试是这样的:

var find = 'tst';
var rStarts = [];
var rEnds = [];
for (var i = 0; i < find.length - 1; i++) {
rStarts.push(= '(' + find[i] + find[i + 1] )
rEnds.push( find[i] + '[^]*?' + find[i + 1] + ')' );
}

但是中途我意识到我不知道我要去哪里。有什么想法可以做到这一点吗?

最佳答案

你可以这样做:

按照您喜欢的顺序计算针子字符串的所有组合的正则表达式并按顺序匹配它们。因此,对于您的测试,您可以进行以下匹配:

/(tst)/
/(ts).*(t)/
/(t).*(st)/ // <- this one matches
/(t).*(s).*(t)/

计算正则表达式很棘手,并且以正确的顺序排列它们取决于您是否更喜欢 4-1-1 分割而不是 2-2-2 分割。

关于javascript - 在字符串中查找字符,但更喜欢使用 NFA 而不进行原子分组的连续字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18830776/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com