2
我構建了RiveScript的chatbot子集,並嘗試使用正則表達式構建模式匹配解析器。哪三個正則表達式匹配以下三個示例?用替代方案和可選方案解析正則表達式
ex1: I am * years old
valid match:
- "I am 24 years old"
invalid match:
- "I am years old"
ex2: what color is [my|your|his|her] (bright red|blue|green|lemon chiffon) *
valid matches:
- "what color is lemon chiffon car"
- "what color is my some random text till the end of string"
ex3: [*] told me to say *
valid matches:
- "Bob and Alice told me to say hallelujah"
- "told me to say by nobody"
通配符表示任何不爲空的文本都是可以接受的。
在示例2中,[ ]
之間的任何內容都是可選的,()
之間的任何內容都是可選的,每個選項或替代項之間用|
分隔。
在示例3中,[*]
是可選的通配符,表示可以接受空白文本。
什麼有關此方案'(+ |。 *)告訴我 說(。+)'。如果在'告訴我說'之前有字符,那麼''之間必須有一個空格以防止字碰撞,例如, 「愛麗絲告訴我說你好,並且」告訴我說你好「應該可以工作,但是」讓我說你好「不會。 – MiP
只要刪除'(。*)告訴我說(。+)'和'Alicetold me to say hi'的空格就會匹配。 – user