得到一些比賽我的文字是這樣的:正則表達式,從最終
有些傢伙寫道:一些內容。
或
一些傢伙說:一些內容。
我想從'寫'的所有內容到最後。
它正在尋找簡單:(said | writes):. *
不過。我的文字的例子可以是這樣的:
有些傢伙寫道:blablabla,說:有些內容
在這裏,我只想得到「說:一些內容」。 但我的正則表達式將所有內容從'寫入'寫入最後。 如何解決這個問題?
得到一些比賽我的文字是這樣的:正則表達式,從最終
有些傢伙寫道:一些內容。
或
一些傢伙說:一些內容。
我想從'寫'的所有內容到最後。
它正在尋找簡單:(said | writes):. *
不過。我的文字的例子可以是這樣的:
有些傢伙寫道:blablabla,說:有些內容
在這裏,我只想得到「說:一些內容」。 但我的正則表達式將所有內容從'寫入'寫入最後。 如何解決這個問題?
前置你有^.*
和捕獲正則表達式它:
^.*((?:said|writes):.*)
初始.*
將抓住整行(或串如果使用DOTALL修飾符)並且將回溯以適應said:
或writes:
,即最後的在字符串/行上。
(?:said|writes)
中的非捕獲組僅用於分組目的,因此只有一個捕獲組ID = 1。
詳細:
^
- 串/線錨的開始(取決於所用的改性劑).*
- 任何0+字符儘可能多(如*
是貪婪量詞)(不使用DOTALL修飾符的換行符號除外)((?:said|writes):.*)
- 第1組捕獲:
(?:said|writes)
- 要麼said
或writes
char序列:
- 冒號.*
- 任何0+字符(比換行符符號以外,如果不使用DOTALL改性劑)到線/串的末尾。我不認爲你需要所有的^ ^。 *'看到我的回答 – Fallenhero
和你的捕獲組是至少「不尋常」。除此之外,總是從你那裏得到很好的答案 – Fallenhero
@Fallenhero:*在這裏,我只想得到'說:有些內容'。*這不是我設定的這樣的要求。 –
我不認爲沒有定義字符串就是分裂的你可能做到這一點與RegExp。你真的應該鞏固你的字符串的模式,並強制它的使用,但這是一個解析你的字符串的編程方式。
const writes = 'Some guy writes: some content.'
const said = 'Some guy said: some content.'
const blah = 'Some guy writes: blablabla, said: some content'
function objectifyString(str) {
const reg = /(said|writes):/
const index = str.search(reg) || 0
const parts = str.substring(index).split(reg).filter(item => item.length)
const obj = {}
const ll = parts.length
let ii = 0
for (; ii < ll; ii+=2) {
obj[parts[ii]] = (parts[ii+1]).trim()
}
return obj
}
console.log(
objectifyString(blah)
)
console.log(
[writes, said, blah].map(objectifyString)
)
我的文本不僅可以用逗號分割,它可以是空格或任何其他符號 –
這裏是你的答案:
var text = "Some guy writes: blablabla, said: some content";
var output = /.*\s(\w+:.*)/.exec(text);
// output[1] contains your answer
請發表您已經嘗試的代碼。 –
@SibeeshVenu:它在那裏,並標記爲代碼。 (儘管在結尾處不應該有空格) – usr2564301