我需要一个正则表达式结果,该结果不包含匹配模式开头和结尾处的子字符串

时间:2019-04-18 19:34:32

标签: regex

我有一个需要匹配的模式,该模式始终是日期“ _YYYYMMDD”。但是,我不想包含“ _”和“。”。结果。我有一个成功匹配上面的正则表达式模式。它太复杂了,无法包含在这里,因为我不得不亲手写并且弄乱它。

足以说明我有一个模式:

[_](lots of stuff in the middle)[.]

它工作正常,但我不想包含“ _”和“。”

任何答案都将不胜感激。谢谢!

2 个答案:

答案 0 :(得分:1)

要使下划线和点与模式匹配,并且不将其包括在完整的匹配文本中,则需要在正则表达式模式中使用环视。后面的正则表达式将匹配前跟_和后跟.

的日期
(?<=_)\d{8}(?=\.)

Regex Demo

此外,如果要将年,月和日部分捕获到自己的捕获组中,则可以使用此正则表达式从组1中捕获年部分,从组2中捕获月,从组3中捕获日期,

(?<=_)(\d{4})(\d{2})(\d{2})(?=\.)

Demo with different parts of date into their own groups

答案 1 :(得分:0)

最简单的方法是从结果中切出第一个和最后一个字符。您可以通过字符串长度来做到这一点:

result="${result:1:8}"

(或result="${result#_}" result="${result%.}" ,因为长度将是恒定的)

或按特定字符:


const App = () => (
    <Router>
        <div>
        <CustomNavbar />
        <Switch>
            <Route path={ROUTES.SIGN_UP} component={SignUpPage} />
            <Route path={ROUTES.SIGN_IN} component={SignInPage} />
            <Route path={ROUTES.PASSWORD_FORGET} component={PasswordForgetPage} />
            <Route exact path={ROUTES.HOME} component={HomePage} />
            <Route path={ROUTES.ACCOUNT} component={AccountPage} />
            <Route path={ROUTES.ADMIN} component={AdminPage} />
            <Route path={ROUTES.MANAGER} component={Manager} />
            <Route path={ROUTES.DEFAULT_SETTINGS} component={DefaultSettings} />
            <Redirect to={ROUTES.HOME} />
        </Switch>
        </div>  
    </Router>

    );

export default withAuthentication(App);