ਵਿਸ਼ਾ - ਸੂਚੀ
ਇਸ ਟਿਊਟੋਰਿਅਲ ਵਿੱਚ, ਤੁਸੀਂ ਇੱਕ ਦਿੱਤੇ ਪੈਟਰਨ ਨਾਲ ਮੇਲ ਖਾਂਦੀਆਂ ਸਬਸਟਰਿੰਗਾਂ ਨੂੰ ਲੱਭਣ ਅਤੇ ਐਕਸਟਰੈਕਟ ਕਰਨ ਲਈ ਐਕਸਲ ਵਿੱਚ ਨਿਯਮਤ ਸਮੀਕਰਨਾਂ ਦੀ ਵਰਤੋਂ ਕਰਨ ਬਾਰੇ ਸਿੱਖੋਗੇ।
ਮਾਈਕ੍ਰੋਸਾਫਟ ਐਕਸਲ ਟੈਕਸਟ ਨੂੰ ਐਕਸਟਰੈਕਟ ਕਰਨ ਲਈ ਕਈ ਫੰਕਸ਼ਨ ਪ੍ਰਦਾਨ ਕਰਦਾ ਹੈ ਸੈੱਲਾਂ ਤੋਂ. ਉਹ ਫੰਕਸ਼ਨ ਤੁਹਾਡੀਆਂ ਵਰਕਸ਼ੀਟਾਂ ਵਿੱਚ ਜ਼ਿਆਦਾਤਰ ਸਤਰ ਕੱਢਣ ਦੀਆਂ ਚੁਣੌਤੀਆਂ ਦਾ ਸਾਮ੍ਹਣਾ ਕਰ ਸਕਦੇ ਹਨ। ਜ਼ਿਆਦਾਤਰ, ਪਰ ਸਾਰੇ ਨਹੀਂ। ਜਦੋਂ ਟੈਕਸਟ ਫੰਕਸ਼ਨ ਠੋਕਰ ਖਾਂਦਾ ਹੈ, ਤਾਂ ਨਿਯਮਤ ਸਮੀਕਰਨ ਬਚਾਅ ਲਈ ਆਉਂਦੇ ਹਨ। ਉਡੀਕ ਕਰੋ... Excel ਵਿੱਚ ਕੋਈ RegEx ਫੰਕਸ਼ਨ ਨਹੀਂ ਹੈ! ਇਹ ਸੱਚ ਹੈ, ਕੋਈ ਇਨਬਿਲਟ ਫੰਕਸ਼ਨ ਨਹੀਂ। ਪਰ ਇੱਥੇ ਕੁਝ ਵੀ ਨਹੀਂ ਹੈ ਜੋ ਤੁਹਾਨੂੰ ਤੁਹਾਡੇ ਆਪਣੇ ਵਰਤਣ ਤੋਂ ਰੋਕਦਾ ਹੈ :)
ਸਟਰਿੰਗਾਂ ਨੂੰ ਐਕਸਟਰੈਕਟ ਕਰਨ ਲਈ ਐਕਸਲ VBA Regex ਫੰਕਸ਼ਨ
ਤੁਹਾਡੇ ਐਕਸਲ ਵਿੱਚ ਇੱਕ ਕਸਟਮ Regex ਐਕਸਟਰੈਕਟ ਫੰਕਸ਼ਨ ਜੋੜਨ ਲਈ, VBA ਸੰਪਾਦਕ ਵਿੱਚ ਹੇਠਾਂ ਦਿੱਤੇ ਕੋਡ ਨੂੰ ਪੇਸਟ ਕਰੋ। VBA ਵਿੱਚ ਰੈਗੂਲਰ ਐਕਸਪ੍ਰੈਸ਼ਨ ਨੂੰ ਸਮਰੱਥ ਕਰਨ ਲਈ, ਅਸੀਂ ਬਿਲਟ-ਇਨ Microsoft RegExp ਆਬਜੈਕਟ ਦੀ ਵਰਤੋਂ ਕਰ ਰਹੇ ਹਾਂ।
Excel ਵਿੱਚ ਟੈਕਸਟ ਐਕਸਟਰੈਕਟ ਕਰਨ ਲਈ ਕਸਟਮ .NET ਅਧਾਰਿਤ Regex ਫੰਕਸ਼ਨ
VBA RegExp ਫੰਕਸ਼ਨਾਂ ਦੇ ਉਲਟ ਜੋ ਕਿਸੇ ਵੀ ਐਕਸਲ ਉਪਭੋਗਤਾ ਦੁਆਰਾ ਲਿਖਿਆ ਜਾ ਸਕਦਾ ਹੈ, .NET RegEx ਡਿਵੈਲਪਰ ਦਾ ਖੇਤਰ ਹੈ। Microsoft .NET ਫਰੇਮਵਰਕ ਪਰਲ 5 ਦੇ ਅਨੁਕੂਲ ਪੂਰੀ-ਵਿਸ਼ੇਸ਼ਤਾ ਵਾਲੇ ਨਿਯਮਤ ਸਮੀਕਰਨ ਸੰਟੈਕਸ ਦਾ ਸਮਰਥਨ ਕਰਦਾ ਹੈ। ਇਹ ਲੇਖ ਤੁਹਾਨੂੰ ਇਹ ਨਹੀਂ ਸਿਖਾਏਗਾ ਕਿ ਅਜਿਹੇ ਫੰਕਸ਼ਨਾਂ ਨੂੰ ਕਿਵੇਂ ਲਿਖਣਾ ਹੈ (ਮੈਂ ਇੱਕ ਪ੍ਰੋਗਰਾਮਰ ਨਹੀਂ ਹਾਂ ਅਤੇ ਮੈਨੂੰ ਇਹ ਕਿਵੇਂ ਕਰਨਾ ਹੈ ਇਸ ਬਾਰੇ ਥੋੜ੍ਹਾ ਜਿਹਾ ਵਿਚਾਰ ਨਹੀਂ ਹੈ :)
ਸਟੈਂਡਰਡ .NET RegEx ਇੰਜਣ ਦੁਆਰਾ ਸੰਸਾਧਿਤ ਚਾਰ ਸ਼ਕਤੀਸ਼ਾਲੀ ਫੰਕਸ਼ਨ ਪਹਿਲਾਂ ਹੀ ਸਾਡੇ ਡਿਵੈਲਪਰਾਂ ਦੁਆਰਾ ਲਿਖੇ ਗਏ ਹਨ ਅਤੇ ਅਲਟੀਮੇਟ ਸੂਟ ਵਿੱਚ ਸ਼ਾਮਲ ਕੀਤੇ ਗਏ ਹਨ। ਹੇਠਾਂ, ਅਸੀਂ ਐਕਸਲ ਵਿੱਚ ਟੈਕਸਟ ਐਕਸਟਰੈਕਟ ਕਰਨ ਲਈ ਵਿਸ਼ੇਸ਼ ਤੌਰ 'ਤੇ ਤਿਆਰ ਕੀਤੇ ਗਏ ਫੰਕਸ਼ਨ ਦੇ ਕੁਝ ਵਿਹਾਰਕ ਉਪਯੋਗਾਂ ਦਾ ਪ੍ਰਦਰਸ਼ਨ ਕਰਾਂਗੇ।
ਟਿਪ। .NET Regex ਸੰਟੈਕਸ ਬਾਰੇ ਜਾਣਕਾਰੀ ਲਈ, ਕਿਰਪਾ ਕਰਕੇ .NET ਰੈਗੂਲਰ ਸਮੀਕਰਨ ਭਾਸ਼ਾ ਵੇਖੋ।
ਰੈਗੂਲਰ ਸਮੀਕਰਨਾਂ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਐਕਸਲ ਵਿੱਚ ਸਟਿੰਗਾਂ ਨੂੰ ਕਿਵੇਂ ਐਕਸਟਰੈਕਟ ਕਰਨਾ ਹੈ
ਇਹ ਮੰਨ ਕੇ ਕਿ ਤੁਹਾਡੇ ਕੋਲ ਅਲਟੀਮੇਟ ਸੂਟ ਦਾ ਨਵੀਨਤਮ ਸੰਸਕਰਣ ਸਥਾਪਤ ਹੈ, ਰੈਗੂਲਰ ਸਮੀਕਰਨਾਂ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਟੈਕਸਟ ਨੂੰ ਐਕਸਟਰੈਕਟ ਕਰਨਾ ਇਹਨਾਂ ਦੋ ਪੜਾਵਾਂ 'ਤੇ ਉਬਾਲਦਾ ਹੈ:
- Ablebits Data ਟੈਬ 'ਤੇ, Text ਗਰੁੱਪ ਵਿੱਚ, Regex Tools 'ਤੇ ਕਲਿੱਕ ਕਰੋ।
- Regex Tools ਪੈਨ 'ਤੇ, ਸਰੋਤ ਡੇਟਾ ਦੀ ਚੋਣ ਕਰੋ, ਆਪਣਾ Regex ਪੈਟਰਨ ਦਰਜ ਕਰੋ, ਅਤੇ ਐਕਸਟ੍ਰੈਕਟ ਵਿਕਲਪ ਚੁਣੋ। ਇੱਕ ਕਸਟਮ ਫੰਕਸ਼ਨ ਦੇ ਰੂਪ ਵਿੱਚ ਨਤੀਜਾ ਪ੍ਰਾਪਤ ਕਰਨ ਲਈ, ਇੱਕ ਮੁੱਲ ਨਹੀਂ, ਇੱਕ ਫਾਰਮੂਲੇ ਦੇ ਰੂਪ ਵਿੱਚ ਸੰਮਿਲਿਤ ਕਰੋ ਚੈੱਕ ਚੁਣੋਡੱਬਾ. ਹੋ ਜਾਣ 'ਤੇ, ਐਕਸਟ੍ਰੈਕਟ ਬਟਨ 'ਤੇ ਕਲਿੱਕ ਕਰੋ।
ਨਤੀਜੇ ਤੁਹਾਡੇ ਮੂਲ ਡੇਟਾ ਦੇ ਸੱਜੇ ਪਾਸੇ ਇੱਕ ਨਵੇਂ ਕਾਲਮ ਵਿੱਚ ਦਿਖਾਈ ਦੇਣਗੇ:
AblebitsRegexExtract ਸੰਟੈਕਸ
ਸਾਡੇ ਕਸਟਮ ਫੰਕਸ਼ਨ ਵਿੱਚ ਹੇਠਾਂ ਦਿੱਤੇ ਸੰਟੈਕਸ ਹਨ:
AblebitsRegexExtract(reference, regular_expression)ਕਿੱਥੇ:
- ਹਵਾਲਾ (ਲੋੜੀਂਦਾ) - ਸਰੋਤ ਸਤਰ ਵਾਲੇ ਸੈੱਲ ਦਾ ਹਵਾਲਾ।
- Regular_expression (ਲੋੜੀਂਦਾ) - ਮੇਲਣ ਲਈ regex ਪੈਟਰਨ।
ਮਹੱਤਵਪੂਰਨ ਨੋਟ! ਫੰਕਸ਼ਨ ਸਿਰਫ਼ ਉਹਨਾਂ ਮਸ਼ੀਨਾਂ 'ਤੇ ਕੰਮ ਕਰਦਾ ਹੈ ਜਿਨ੍ਹਾਂ 'ਤੇ ਐਕਸਲ ਲਈ ਅਲਟੀਮੇਟ ਸੂਟ ਇੰਸਟਾਲ ਹੈ।
ਵਰਤੋਂ ਨੋਟਸ
ਤੁਹਾਡੇ ਸਿੱਖਣ ਦੇ ਕਰਵ ਨੂੰ ਸੁਚਾਰੂ ਬਣਾਉਣ ਅਤੇ ਤੁਹਾਡੇ ਅਨੁਭਵ ਨੂੰ ਹੋਰ ਮਜ਼ੇਦਾਰ ਬਣਾਉਣ ਲਈ, ਕਿਰਪਾ ਕਰਕੇ ਇਹਨਾਂ ਨੁਕਤਿਆਂ 'ਤੇ ਧਿਆਨ ਦਿਓ:
- ਇੱਕ ਫਾਰਮੂਲਾ ਬਣਾਉਣ ਲਈ, ਤੁਸੀਂ ਸਾਡੇ Regex Tools , ਜਾਂ Excel ਦੇ Insert function ਡਾਇਲਾਗ ਦੀ ਵਰਤੋਂ ਕਰ ਸਕਦੇ ਹੋ, ਜਾਂ ਇੱਕ ਸੈੱਲ ਵਿੱਚ ਪੂਰਾ ਫੰਕਸ਼ਨ ਨਾਮ ਟਾਈਪ ਕਰ ਸਕਦੇ ਹੋ। ਇੱਕ ਵਾਰ ਫਾਰਮੂਲਾ ਪਾ ਦਿੱਤੇ ਜਾਣ ਤੋਂ ਬਾਅਦ, ਤੁਸੀਂ ਇਸਨੂੰ ਕਿਸੇ ਵੀ ਮੂਲ ਫਾਰਮੂਲੇ ਵਾਂਗ ਪ੍ਰਬੰਧਿਤ ਕਰ ਸਕਦੇ ਹੋ (ਸੰਪਾਦਨ, ਕਾਪੀ ਜਾਂ ਮੂਵ)।
- ਤੁਹਾਡੇ ਵੱਲੋਂ ਰੇਜੈਕਸ ਟੂਲਜ਼ ਪੈਨਲ 'ਤੇ ਦਰਜ ਕੀਤਾ ਗਿਆ ਪੈਟਰਨ ਦੂਜੇ ਆਰਗੂਮੈਂਟ 'ਤੇ ਜਾਂਦਾ ਹੈ। ਇੱਕ ਵੱਖਰੇ ਸੈੱਲ ਵਿੱਚ ਨਿਯਮਤ ਸਮੀਕਰਨ ਰੱਖਣਾ ਵੀ ਸੰਭਵ ਹੈ। ਇਸ ਕੇਸ ਵਿੱਚ, ਦੂਜੀ ਆਰਗੂਮੈਂਟ ਲਈ ਇੱਕ ਸੈੱਲ ਸੰਦਰਭ ਦੀ ਵਰਤੋਂ ਕਰੋ।
- ਫੰਕਸ਼ਨ ਪਹਿਲੀ ਲੱਭੀ ਹੋਈ ਮੇਲ ਨੂੰ ਐਕਸਟਰੈਕਟ ਕਰਦਾ ਹੈ।
- ਮੂਲ ਰੂਪ ਵਿੱਚ, ਫੰਕਸ਼ਨ ਕੇਸ ਹੈ -ਸੰਵੇਦਨਸ਼ੀਲ । ਕੇਸ-ਸੰਵੇਦਨਸ਼ੀਲ ਮੇਲ ਲਈ, (?i) ਪੈਟਰਨ ਦੀ ਵਰਤੋਂ ਕਰੋ।
- ਜੇਕਰ ਕੋਈ ਮੇਲ ਨਹੀਂ ਮਿਲਦਾ, ਤਾਂ ਇੱਕ #N/A ਗਲਤੀ ਹੈਵਾਪਸ ਕੀਤਾ।
ਦੋ ਅੱਖਰਾਂ ਵਿਚਕਾਰ ਸਟ੍ਰਿੰਗ ਕੱਢਣ ਲਈ Regex
ਦੋ ਅੱਖਰਾਂ ਦੇ ਵਿਚਕਾਰ ਟੈਕਸਟ ਪ੍ਰਾਪਤ ਕਰਨ ਲਈ, ਤੁਸੀਂ ਜਾਂ ਤਾਂ ਕੈਪਚਰ ਕਰਨ ਵਾਲੇ ਸਮੂਹ ਜਾਂ ਆਲੇ-ਦੁਆਲੇ ਦੇ ਦ੍ਰਿਸ਼ ਦੀ ਵਰਤੋਂ ਕਰ ਸਕਦੇ ਹੋ।
ਆਓ ਕਹੋ ਕਿ ਤੁਸੀਂ ਬਰੈਕਟਾਂ ਦੇ ਵਿਚਕਾਰ ਟੈਕਸਟ ਨੂੰ ਐਕਸਟਰੈਕਟ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹੋ। ਇੱਕ ਕੈਪਚਰਿੰਗ ਗਰੁੱਪ ਸਭ ਤੋਂ ਆਸਾਨ ਤਰੀਕਾ ਹੈ।
ਪੈਟਰਨ 1 : \[(.*?)\]
ਪਿੱਛੇ ਅਤੇ ਅੱਗੇ ਦੇਖਦਿਆਂ ਇੱਕ ਸਕਾਰਾਤਮਕ ਨਜ਼ਰ ਨਾਲ, ਨਤੀਜਾ ਬਿਲਕੁਲ ਸਹੀ ਹੋਵੇਗਾ। ਉਹੀ।
ਪੈਟਰਨ 2 : (?<=\[)(.*?)(?=\])
ਕਿਰਪਾ ਕਰਕੇ ਧਿਆਨ ਦਿਓ ਕਿ ਸਾਡਾ ਕੈਪਚਰਿੰਗ ਗਰੁੱਪ (.*?) ਦੋ ਬਰੈਕਟਾਂ ਵਿਚਕਾਰ ਟੈਕਸਟ ਲਈ ਆਲਸੀ ਖੋਜ ਕਰਦਾ ਹੈ - ਪਹਿਲੇ [ ਤੋਂ ਪਹਿਲੇ] ਤੱਕ। ਬਿਨਾਂ ਪ੍ਰਸ਼ਨ ਚਿੰਨ੍ਹ ਦੇ ਇੱਕ ਕੈਪਚਰ ਕਰਨ ਵਾਲਾ ਸਮੂਹ ( ) ਇੱਕ ਲਾਲਚੀ ਖੋਜ ਕਰੇਗਾ ਅਤੇ ਪਹਿਲੇ [ ਤੋਂ ਆਖਰੀ ਤੱਕ] ਸਭ ਕੁਝ ਕੈਪਚਰ ਕਰੇਗਾ।
A2 ਵਿੱਚ ਪੈਟਰਨ ਦੇ ਨਾਲ, ਫਾਰਮੂਲਾ ਇਸ ਤਰ੍ਹਾਂ ਜਾਂਦਾ ਹੈ ਇਸ ਤਰ੍ਹਾਂ ਹੈ:
=AblebitsRegexExtract(A5, $A$2)
ਸਾਰੇ ਮੈਚ ਕਿਵੇਂ ਪ੍ਰਾਪਤ ਕਰਨੇ ਹਨ
ਜਿਵੇਂ ਕਿ ਪਹਿਲਾਂ ਹੀ ਦੱਸਿਆ ਗਿਆ ਹੈ, AblebitsRegexExtract ਫੰਕਸ਼ਨ ਸਿਰਫ ਇੱਕ ਮੈਚ ਕੱਢ ਸਕਦਾ ਹੈ। ਸਾਰੇ ਮੈਚ ਪ੍ਰਾਪਤ ਕਰਨ ਲਈ, ਤੁਸੀਂ VBA ਫੰਕਸ਼ਨ ਦੀ ਵਰਤੋਂ ਕਰ ਸਕਦੇ ਹੋ ਜਿਸ ਬਾਰੇ ਅਸੀਂ ਪਹਿਲਾਂ ਚਰਚਾ ਕੀਤੀ ਹੈ। ਹਾਲਾਂਕਿ, ਇੱਥੇ ਇੱਕ ਚੇਤਾਵਨੀ ਹੈ - VBA RegExp ਸਮੂਹਾਂ ਨੂੰ ਕੈਪਚਰ ਕਰਨ ਦਾ ਸਮਰਥਨ ਨਹੀਂ ਕਰਦਾ ਹੈ, ਇਸਲਈ ਉਪਰੋਕਤ ਪੈਟਰਨ "ਸੀਮਾ" ਅੱਖਰ ਵੀ ਵਾਪਸ ਕਰੇਗਾ, ਸਾਡੇ ਕੇਸ ਵਿੱਚ ਬਰੈਕਟਸ।
=TEXTJOIN(" ", TRUE, RegExpExtract(A5, $A$2))
ਛੁਟਕਾਰਾ ਪਾਉਣ ਲਈ ਬਰੈਕਟਾਂ ਵਿੱਚੋਂ, ਉਹਨਾਂ ਨੂੰ ਇਸ ਫਾਰਮੂਲੇ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਖਾਲੀ ਸਤਰ ("") ਨਾਲ ਬਦਲੋ:
=SUBSTITUTE(SUBSTITUTE(TEXTJOIN(", ", TRUE, RegExpExtract(A5, $A$2)), "]", ""),"[","")
ਬਿਹਤਰ ਪੜ੍ਹਨਯੋਗਤਾ ਲਈ, ਅਸੀਂ ਡੈਲੀਮੀਟਰ ਲਈ ਕਾਮੇ ਦੀ ਵਰਤੋਂ ਕਰ ਰਹੇ ਹਾਂ।
ਦੋ ਸਤਰ ਦੇ ਵਿਚਕਾਰ ਟੈਕਸਟ ਨੂੰ ਐਕਸਟਰੈਕਟ ਕਰਨ ਲਈ Regex
ਜਿਸ ਤਰੀਕੇ ਨਾਲ ਅਸੀਂ ਕੰਮ ਕੀਤਾ ਹੈਇਸਦਾ ਸ਼ਾਬਦਿਕ ਅਰਥ ਕਰੋ)।
A2 ਵਿੱਚ ਰੈਗੂਲਰ ਸਮੀਕਰਨ ਦਰਜ ਕੀਤੇ ਜਾਣ ਦੇ ਆਧਾਰ 'ਤੇ, ਹੇਠਾਂ ਦਿੱਤਾ ਫਾਰਮੂਲਾ ਵੱਖ-ਵੱਖ ਨਤੀਜੇ ਪੇਸ਼ ਕਰੇਗਾ:
=AblebitsRegexExtract(A5, $A$2)
ਸਾਰੇ ਉਪ-ਡੋਮੇਨਾਂ ਦੇ ਨਾਲ ਪੂਰਾ ਡੋਮੇਨ ਨਾਮ ਐਕਸਟਰੈਕਟ ਕਰਨ ਲਈ Regex:
ਇੱਕ ਦੂਜੇ-ਪੱਧਰ ਡੋਮੇਨ ਨੂੰ ਸਬਡੋਮੇਨਾਂ ਤੋਂ ਬਿਨਾਂ ਐਕਸਟਰੈਕਟ ਕਰਨ ਲਈ:
ਇਸ ਤਰ੍ਹਾਂ ਰੈਗੂਲਰ ਸਮੀਕਰਨ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਐਕਸਲ ਵਿੱਚ ਟੈਕਸਟ ਦੇ ਭਾਗਾਂ ਨੂੰ ਐਕਸਟਰੈਕਟ ਕਰਨਾ ਹੈ। ਮੈਂ ਪੜ੍ਹਨ ਲਈ ਤੁਹਾਡਾ ਧੰਨਵਾਦ ਕਰਦਾ ਹਾਂ ਅਤੇ ਅਗਲੇ ਹਫ਼ਤੇ ਤੁਹਾਨੂੰ ਸਾਡੇ ਬਲੌਗ 'ਤੇ ਮਿਲਣ ਦੀ ਉਮੀਦ ਕਰਦਾ ਹਾਂ!
ਉਪਲਬਧ ਡਾਉਨਲੋਡਸ
Excel Regex ਐਕਸਟਰੈਕਟ ਉਦਾਹਰਨਾਂ (.xlsm ਫਾਈਲ)
Ultimate Suite ਟ੍ਰਾਇਲ ਸੰਸਕਰਣ (.exe ਫਾਈਲ)
\b(0?[0-9]matches.Count - 1 text_maches(matches_index, 0) = matches.Item(matches_index) ਅਗਲਾ matches_index RegExpExtract = text_maches ਬਾਕੀ RegExpExtract = matches.Item(instance_num - 1) End If End If Exit ਫੰਕਸ਼ਨ: RegExlEndEf ਫੰਕਸ਼ਨ ErrVLxEndExEndExEdਜੇਕਰ ਤੁਹਾਡੇ ਕੋਲ VBA ਦਾ ਬਹੁਤ ਘੱਟ ਅਨੁਭਵ ਹੈ, ਤਾਂ ਇੱਕ ਕਦਮ-ਦਰ-ਕਦਮ ਉਪਭੋਗਤਾ ਗਾਈਡ ਮਦਦਗਾਰ ਸਾਬਤ ਹੋ ਸਕਦੀ ਹੈ: ਐਕਸਲ ਵਿੱਚ VBA ਕੋਡ ਕਿਵੇਂ ਸ਼ਾਮਲ ਕਰਨਾ ਹੈ।
ਨੋਟ ਕਰੋ। ਫੰਕਸ਼ਨ ਦੇ ਕੰਮ ਕਰਨ ਲਈ, ਆਪਣੀ ਫਾਈਲ ਨੂੰ ਇੱਕ ਮੈਕਰੋ-ਸਮਰਥਿਤ ਵਰਕਬੁੱਕ (.xlsm) ਦੇ ਰੂਪ ਵਿੱਚ ਸੁਰੱਖਿਅਤ ਕਰਨਾ ਯਕੀਨੀ ਬਣਾਓ।
RegExpExtract ਸੰਟੈਕਸ
RegExpExtract ਫੰਕਸ਼ਨ ਇੱਕ ਰੈਗੂਲਰ ਸਮੀਕਰਨ ਨਾਲ ਮੇਲ ਖਾਂਦਾ ਮੁੱਲਾਂ ਲਈ ਇੱਕ ਇਨਪੁਟ ਸਟ੍ਰਿੰਗ ਖੋਜਦਾ ਹੈ ਅਤੇ ਇੱਕ ਜਾਂ ਸਾਰੇ ਮੇਲ ਕੱਢਦਾ ਹੈ।
ਫੰਕਸ਼ਨ ਵਿੱਚ ਹੇਠਾਂ ਦਿੱਤੇ ਸੰਟੈਕਸ ਹਨ :
RegExpExtract(text, pattern, [instance_num], [match_case])ਕਿੱਥੇ:
- ਟੈਕਸਟ (ਲੋੜੀਂਦਾ) - ਖੋਜ ਕਰਨ ਲਈ ਟੈਕਸਟ ਸਤਰ।
- ਪੈਟਰਨ (ਲੋੜੀਂਦਾ) - ਮੇਲ ਕਰਨ ਲਈ ਨਿਯਮਤ ਸਮੀਕਰਨ। ਜਦੋਂ ਕਿਸੇ ਫਾਰਮੂਲੇ ਵਿੱਚ ਸਿੱਧੇ ਤੌਰ 'ਤੇ ਸਪਲਾਈ ਕੀਤਾ ਜਾਂਦਾ ਹੈ, ਤਾਂ ਪੈਟਰਨ ਨੂੰ ਦੋਹਰੇ ਹਵਾਲੇ ਦੇ ਚਿੰਨ੍ਹ ਵਿੱਚ ਨੱਥੀ ਕੀਤਾ ਜਾਣਾ ਚਾਹੀਦਾ ਹੈ।
- ਇੰਸਟੈਂਸ_ਨਮ (ਵਿਕਲਪਿਕ) - ਇੱਕ ਸੀਰੀਅਲ ਨੰਬਰ ਜੋ ਦਰਸਾਉਂਦਾ ਹੈ ਕਿ ਕਿਹੜੀ ਉਦਾਹਰਣ ਨੂੰ ਐਕਸਟਰੈਕਟ ਕਰਨਾ ਹੈ। ਜੇਕਰ ਛੱਡਿਆ ਜਾਂਦਾ ਹੈ, ਤਾਂ ਸਾਰੇ ਮਿਲੇ ਮੇਲ (ਡਿਫੌਲਟ) ਵਾਪਸ ਕਰਦਾ ਹੈ।
- Match_case (ਵਿਕਲਪਿਕ) - ਪਰਿਭਾਸ਼ਿਤ ਕਰਦਾ ਹੈ ਕਿ ਟੈਕਸਟ ਕੇਸ ਨਾਲ ਮੇਲ ਕਰਨਾ ਹੈ ਜਾਂ ਅਣਡਿੱਠ ਕਰਨਾ ਹੈ। ਜੇਕਰ TRUE ਜਾਂ ਛੱਡਿਆ ਗਿਆ (ਡਿਫੌਲਟ), ਕੇਸ-ਸੰਵੇਦਨਸ਼ੀਲ ਮੈਚਿੰਗ ਕੀਤੀ ਜਾਂਦੀ ਹੈ; ਜੇਕਰ ਗਲਤ - ਕੇਸ-ਸੰਵੇਦਨਸ਼ੀਲ।
ਫੰਕਸ਼ਨ Excel 365, Excel 2021, Excel ਦੇ ਸਾਰੇ ਸੰਸਕਰਣਾਂ ਵਿੱਚ ਕੰਮ ਕਰਦਾ ਹੈ2019, Excel 2016, Excel 2013 ਅਤੇ Excel 2010।
4 ਚੀਜ਼ਾਂ ਜੋ ਤੁਹਾਨੂੰ RegExpExtract ਬਾਰੇ ਪਤਾ ਹੋਣੀਆਂ ਚਾਹੀਦੀਆਂ ਹਨ
ਤੁਹਾਡੇ ਐਕਸਲ ਵਿੱਚ ਫੰਕਸ਼ਨ ਨੂੰ ਪ੍ਰਭਾਵਸ਼ਾਲੀ ਢੰਗ ਨਾਲ ਵਰਤਣ ਲਈ, ਧਿਆਨ ਦੇਣ ਲਈ ਕੁਝ ਮਹੱਤਵਪੂਰਨ ਗੱਲਾਂ ਹਨ:
- ਮੂਲ ਰੂਪ ਵਿੱਚ, ਫੰਕਸ਼ਨ ਸਾਰੇ ਮਿਲੇ ਮੈਚ ਨੂੰ ਗੁਆਂਢੀ ਸੈੱਲਾਂ ਵਿੱਚ ਵਾਪਸ ਕਰਦਾ ਹੈ ਜਿਵੇਂ ਕਿ ਇਸ ਉਦਾਹਰਨ ਵਿੱਚ ਦਿਖਾਇਆ ਗਿਆ ਹੈ। ਇੱਕ ਖਾਸ ਮੌਜੂਦਗੀ ਪ੍ਰਾਪਤ ਕਰਨ ਲਈ, instance_num ਆਰਗੂਮੈਂਟ ਨੂੰ ਇੱਕ ਅਨੁਸਾਰੀ ਨੰਬਰ ਦਿਓ।
- ਮੂਲ ਰੂਪ ਵਿੱਚ, ਫੰਕਸ਼ਨ ਕੇਸ-ਸੰਵੇਦਨਸ਼ੀਲ ਹੈ। ਕੇਸ-ਸੰਵੇਦਨਸ਼ੀਲ ਮੈਚਿੰਗ ਲਈ, match_case ਆਰਗੂਮੈਂਟ ਨੂੰ FALSE 'ਤੇ ਸੈੱਟ ਕਰੋ। VBA ਸੀਮਾਵਾਂ ਦੇ ਕਾਰਨ, ਕੇਸ-ਸੰਵੇਦਨਸ਼ੀਲ ਨਿਰਮਾਣ (?i) ਕੰਮ ਨਹੀਂ ਕਰੇਗਾ।
- ਜੇਕਰ ਇੱਕ ਵੈਧ ਪੈਟਰਨ ਨਹੀਂ ਮਿਲਦਾ , ਤਾਂ ਫੰਕਸ਼ਨ ਕੁਝ ਵੀ ਨਹੀਂ ਦਿੰਦਾ (ਖਾਲੀ ਸਤਰ)।
- ਜੇਕਰ ਪੈਟਰਨ ਅਵੈਧ ਹੈ , ਤਾਂ ਇੱਕ #VALUE! ਗਲਤੀ ਆਉਂਦੀ ਹੈ।
ਇਸ ਤੋਂ ਪਹਿਲਾਂ ਕਿ ਤੁਸੀਂ ਆਪਣੀਆਂ ਵਰਕਸ਼ੀਟਾਂ ਵਿੱਚ ਇਸ ਕਸਟਮ ਫੰਕਸ਼ਨ ਦੀ ਵਰਤੋਂ ਸ਼ੁਰੂ ਕਰੋ, ਤੁਹਾਨੂੰ ਇਹ ਸਮਝਣ ਦੀ ਲੋੜ ਹੈ ਕਿ ਇਹ ਕਿਸ ਦੇ ਯੋਗ ਹੈ, ਠੀਕ ਹੈ? ਹੇਠਾਂ ਦਿੱਤੀਆਂ ਉਦਾਹਰਨਾਂ ਕੁਝ ਆਮ ਵਰਤੋਂ ਦੇ ਮਾਮਲਿਆਂ ਨੂੰ ਕਵਰ ਕਰਦੀਆਂ ਹਨ ਅਤੇ ਦੱਸਦੀਆਂ ਹਨ ਕਿ ਡਾਇਨਾਮਿਕ ਐਰੇ ਐਕਸਲ (Microsoft 365 ਅਤੇ Excel 2021) ਅਤੇ ਰਵਾਇਤੀ Excel (2019 ਅਤੇ ਪੁਰਾਣੇ ਸੰਸਕਰਣਾਂ) ਵਿੱਚ ਵਿਹਾਰ ਵੱਖਰਾ ਕਿਉਂ ਹੋ ਸਕਦਾ ਹੈ।
ਨੋਟ ਕਰੋ। ਬਾਹਰ ਰੇਜੈਕਸ ਉਦਾਹਰਨਾਂ ਪਰੀ ਸਧਾਰਨ ਡੇਟਾ ਸੈੱਟਾਂ ਲਈ ਲਿਖੀਆਂ ਗਈਆਂ ਹਨ। ਅਸੀਂ ਗਾਰੰਟੀ ਨਹੀਂ ਦੇ ਸਕਦੇ ਹਾਂ ਕਿ ਉਹ ਤੁਹਾਡੀ ਅਸਲ ਵਰਕਸ਼ੀਟਾਂ ਵਿੱਚ ਨਿਰਦੋਸ਼ ਕੰਮ ਕਰਨਗੇ। ਜਿਨ੍ਹਾਂ ਨੂੰ regex ਦਾ ਤਜਰਬਾ ਹੈ ਉਹ ਇਸ ਗੱਲ ਨਾਲ ਸਹਿਮਤ ਹੋਣਗੇ ਕਿ ਨਿਯਮਤ ਸਮੀਕਰਨ ਲਿਖਣਾ ਸੰਪੂਰਨਤਾ ਲਈ ਕਦੇ ਨਾ ਖਤਮ ਹੋਣ ਵਾਲਾ ਰਸਤਾ ਹੈ - ਲਗਭਗ ਹਮੇਸ਼ਾ ਬਣਾਉਣ ਦਾ ਇੱਕ ਤਰੀਕਾ ਹੁੰਦਾ ਹੈਇਹ ਵਧੇਰੇ ਸ਼ਾਨਦਾਰ ਜਾਂ ਇੰਪੁੱਟ ਡੇਟਾ ਦੀ ਇੱਕ ਵਿਸ਼ਾਲ ਸ਼੍ਰੇਣੀ ਨੂੰ ਸੰਭਾਲਣ ਦੇ ਸਮਰੱਥ ਹੈ।
ਸਤਰ ਤੋਂ ਸੰਖਿਆ ਕੱਢਣ ਲਈ Regex
"ਸਰਲ ਤੋਂ ਗੁੰਝਲਦਾਰ ਤੱਕ" ਸਿਖਾਉਣ ਦੇ ਮੂਲ ਅਧਿਕਤਮ ਦਾ ਪਾਲਣ ਕਰਦੇ ਹੋਏ, ਅਸੀਂ ਇੱਕ ਬਹੁਤ ਹੀ ਸਾਦੇ ਕੇਸ ਨਾਲ ਸ਼ੁਰੂ ਕਰਾਂਗੇ: ਸਟ੍ਰਿੰਗ ਤੋਂ ਸੰਖਿਆ ਕੱਢਣਾ।
The ਤੁਹਾਡੇ ਲਈ ਸਭ ਤੋਂ ਪਹਿਲਾਂ ਇਹ ਫੈਸਲਾ ਕਰਨਾ ਹੈ ਕਿ ਕਿਹੜਾ ਨੰਬਰ ਮੁੜ ਪ੍ਰਾਪਤ ਕਰਨਾ ਹੈ: ਪਹਿਲਾ, ਆਖਰੀ, ਖਾਸ ਮੌਜੂਦਗੀ ਜਾਂ ਸਾਰੇ ਨੰਬਰ।
ਪਹਿਲਾ ਨੰਬਰ ਐਕਸਟਰੈਕਟ ਕਰੋ
ਇਹ ਓਨਾ ਹੀ ਸਧਾਰਨ ਹੈ ਜਿੰਨਾ ਕਿ regex ਪ੍ਰਾਪਤ ਕਰ ਸਕਦਾ ਹੈ। ਇਹ ਦੇਖਦੇ ਹੋਏ ਕਿ \d ਦਾ ਮਤਲਬ 0 ਤੋਂ 9 ਤੱਕ ਕੋਈ ਵੀ ਅੰਕ ਹੈ, ਅਤੇ + ਦਾ ਅਰਥ ਹੈ ਇੱਕ ਜਾਂ ਇੱਕ ਤੋਂ ਵੱਧ ਵਾਰ, ਸਾਡਾ ਨਿਯਮਿਤ ਸਮੀਕਰਨ ਇਹ ਰੂਪ ਲੈਂਦਾ ਹੈ:
ਪੈਟਰਨ : \d+
ਸੈੱਟ instance_num to 1 ਅਤੇ ਤੁਹਾਨੂੰ ਲੋੜੀਂਦਾ ਨਤੀਜਾ ਮਿਲੇਗਾ:
=RegExpExtract(A5, "\d+", 1)
ਜਿੱਥੇ A5 ਅਸਲੀ ਸਤਰ ਹੈ।
ਸੁਵਿਧਾ ਲਈ, ਤੁਸੀਂ ਇਨਪੁਟ ਕਰ ਸਕਦੇ ਹੋ ਇੱਕ ਪੂਰਵ-ਪਰਿਭਾਸ਼ਿਤ ਸੈੱਲ ($A$2 ) ਵਿੱਚ ਪੈਟਰਨ ਅਤੇ ਇਸ ਦੇ ਪਤੇ ਨੂੰ $ ਚਿੰਨ੍ਹ ਨਾਲ ਲੌਕ ਕਰੋ:
=RegExpExtract(A5, $A$2, 1)
ਪਿਛਲੇ ਨੰਬਰ ਪ੍ਰਾਪਤ ਕਰੋ
ਇੱਕ ਸਤਰ ਵਿੱਚ ਆਖਰੀ ਨੰਬਰ ਕੱਢਣ ਲਈ , ਇੱਥੇ ਵਰਤਣ ਲਈ ਪੈਟਰਨ ਹੈ:
ਪੈਟਰਨ : (\d+)(?!.*\d)
ਮਨੁੱਖੀ ਭਾਸ਼ਾ ਵਿੱਚ ਅਨੁਵਾਦ ਕੀਤਾ ਗਿਆ , ਇਹ ਕਹਿੰਦਾ ਹੈ: ਇੱਕ ਨੰਬਰ ਲੱਭੋ ਜੋ ਕਿਸੇ ਹੋਰ ਨੰਬਰ ਦੁਆਰਾ (ਕਿਤੇ ਵੀ, ਤੁਰੰਤ ਹੀ ਨਹੀਂ) ਦਾ ਅਨੁਸਰਣ ਨਹੀਂ ਕੀਤਾ ਜਾਂਦਾ ਹੈ। ਇਸ ਨੂੰ ਪ੍ਰਗਟ ਕਰਨ ਲਈ, ਅਸੀਂ ਇੱਕ ਨਕਾਰਾਤਮਕ ਲੁੱਕਅਹੇਡ (?!.*\d) ਦੀ ਵਰਤੋਂ ਕਰ ਰਹੇ ਹਾਂ, ਜਿਸਦਾ ਮਤਲਬ ਹੈ ਕਿ ਪੈਟਰਨ ਦੇ ਸੱਜੇ ਪਾਸੇ ਕੋਈ ਹੋਰ ਅੰਕ (\d) ਨਹੀਂ ਹੋਣਾ ਚਾਹੀਦਾ ਭਾਵੇਂ ਇਸ ਤੋਂ ਪਹਿਲਾਂ ਕਿੰਨੇ ਹੋਰ ਅੱਖਰ ਹੋਣ।
=RegExpExtract(A5, "(\d+)(?!.*\d)")
ਸੁਝਾਅ:
- ਖਾਸ ਮੌਜੂਦਗੀ ਪ੍ਰਾਪਤ ਕਰਨ ਲਈ, ਪੈਟਰਨ ਲਈ \d+ ਅਤੇ ਇੱਕ ਉਚਿਤ ਸੀਰੀਅਲ ਦੀ ਵਰਤੋਂ ਕਰੋ। instance_num ਲਈ ਨੰਬਰ।
- ਸਾਰੇ ਨੰਬਰ ਨੂੰ ਐਕਸਟਰੈਕਟ ਕਰਨ ਲਈ ਫਾਰਮੂਲੇ ਦੀ ਅਗਲੀ ਉਦਾਹਰਨ ਵਿੱਚ ਚਰਚਾ ਕੀਤੀ ਗਈ ਹੈ।
ਸਾਰੇ ਮੈਚਾਂ ਨੂੰ ਐਕਸਟਰੈਕਟ ਕਰਨ ਲਈ Regex
ਸਾਡੀ ਉਦਾਹਰਣ ਨੂੰ ਥੋੜਾ ਹੋਰ ਅੱਗੇ ਵਧਾਉਂਦੇ ਹੋਏ, ਮੰਨ ਲਓ ਕਿ ਤੁਸੀਂ ਇੱਕ ਸਤਰ ਤੋਂ ਸਾਰੇ ਨੰਬਰ ਪ੍ਰਾਪਤ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹੋ, ਨਾ ਕਿ ਸਿਰਫ਼ ਇੱਕ।
ਜਿਵੇਂ ਕਿ ਤੁਹਾਨੂੰ ਯਾਦ ਹੋਵੇਗਾ, ਐਕਸਟਰੈਕਟ ਕੀਤੇ ਮੈਚਾਂ ਦੀ ਸੰਖਿਆ ਵਿਕਲਪਿਕ <1 ਦੁਆਰਾ ਨਿਯੰਤਰਿਤ ਕੀਤੀ ਜਾਂਦੀ ਹੈ।>instance_num ਆਰਗੂਮੈਂਟ। ਪੂਰਵ-ਨਿਰਧਾਰਤ ਸਾਰੇ ਮੈਚ ਹੁੰਦੇ ਹਨ, ਇਸਲਈ ਤੁਸੀਂ ਬਸ ਇਸ ਪੈਰਾਮੀਟਰ ਨੂੰ ਛੱਡ ਦਿੰਦੇ ਹੋ:
=RegExpExtract(A2, "\d+")
ਫਾਰਮੂਲਾ ਇੱਕ ਸਿੰਗਲ ਸੈੱਲ ਲਈ ਵਧੀਆ ਢੰਗ ਨਾਲ ਕੰਮ ਕਰਦਾ ਹੈ, ਪਰ ਵਿਹਾਰ ਡਾਇਨਾਮਿਕ ਐਰੇ ਐਕਸਲ ਅਤੇ ਗੈਰ-ਡਾਇਨਾਮਿਕ ਸੰਸਕਰਣਾਂ ਵਿੱਚ ਵੱਖਰਾ ਹੁੰਦਾ ਹੈ।
Excel 365 ਅਤੇ Excel 2021
ਡਾਇਨਾਮਿਕ ਐਰੇ ਦੇ ਸਮਰਥਨ ਦੇ ਕਾਰਨ, ਇੱਕ ਨਿਯਮਤ ਫਾਰਮੂਲਾ ਆਪਣੇ ਆਪ ਹੀ ਸਾਰੇ ਗਣਨਾ ਕੀਤੇ ਨਤੀਜਿਆਂ ਨੂੰ ਪ੍ਰਦਰਸ਼ਿਤ ਕਰਨ ਲਈ ਲੋੜੀਂਦੇ ਸੈੱਲਾਂ ਵਿੱਚ ਫੈਲ ਜਾਂਦਾ ਹੈ। ਐਕਸਲ ਦੇ ਰੂਪ ਵਿੱਚ, ਇਸਨੂੰ ਇੱਕ ਸਪਿਲਡ ਰੇਂਜ ਕਿਹਾ ਜਾਂਦਾ ਹੈ:
ਐਕਸਲ 2019 ਅਤੇ ਘੱਟ
ਪ੍ਰੀ-ਡਾਇਨਾਮਿਕ ਐਕਸਲ ਵਿੱਚ, ਉਪਰੋਕਤ ਫਾਰਮੂਲਾ ਸਿਰਫ਼ ਇੱਕ ਮੈਚ ਵਾਪਸ ਕਰੇਗਾ। ਕਈ ਮੈਚਾਂ ਨੂੰ ਪ੍ਰਾਪਤ ਕਰਨ ਲਈ, ਤੁਹਾਨੂੰ ਇਸਨੂੰ ਇੱਕ ਐਰੇ ਫਾਰਮੂਲਾ ਬਣਾਉਣ ਦੀ ਲੋੜ ਹੈ। ਇਸਦੇ ਲਈ, ਸੈੱਲਾਂ ਦੀ ਇੱਕ ਰੇਂਜ ਚੁਣੋ, ਫਾਰਮੂਲਾ ਟਾਈਪ ਕਰੋ, ਅਤੇ ਇਸਨੂੰ ਪੂਰਾ ਕਰਨ ਲਈ Ctrl + Shift + Enter ਦਬਾਓ।
ਇਸ ਪਹੁੰਚ ਦਾ ਇੱਕ ਨਨੁਕਸਾਨ "ਵਾਧੂ ਸੈੱਲਾਂ" ਵਿੱਚ ਦਿਖਾਈ ਦੇਣ ਵਾਲੀਆਂ #N/A ਗਲਤੀਆਂ ਦਾ ਇੱਕ ਸਮੂਹ ਹੈ। . ਅਫਸੋਸ ਨਾਲ, ਇਸ ਬਾਰੇ ਕੁਝ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ (ਨਾ ਤਾਂ IFERROR ਅਤੇ ਨਾ ਹੀ IFNA ਇਸਨੂੰ ਠੀਕ ਕਰ ਸਕਦਾ ਹੈ, ਹਾਏ)।
ਸਾਰੇ ਮੈਚਾਂ ਨੂੰ ਇੱਕ ਸੈੱਲ ਵਿੱਚ ਐਕਸਟਰੈਕਟ ਕਰੋ
ਡੈਟੇ ਦੇ ਇੱਕ ਕਾਲਮ ਦੀ ਪ੍ਰਕਿਰਿਆ ਕਰਦੇ ਸਮੇਂ, ਉਪਰੋਕਤ ਪਹੁੰਚ ਸਪੱਸ਼ਟ ਤੌਰ 'ਤੇ ਕੰਮ ਨਹੀਂ ਕਰੇਗੀ। ਇਸ ਮਾਮਲੇ ਵਿੱਚ, ਇੱਕ ਆਦਰਸ਼ ਹੱਲ ਹੈਸਾਰੇ ਮੈਚਾਂ ਨੂੰ ਇੱਕ ਸੈੱਲ ਵਿੱਚ ਵਾਪਸ ਕਰ ਦਿੱਤਾ ਜਾਵੇਗਾ। ਇਸਨੂੰ ਪੂਰਾ ਕਰਨ ਲਈ, RegExpExtract ਦੇ ਨਤੀਜਿਆਂ ਨੂੰ TEXTJOIN ਫੰਕਸ਼ਨ ਵਿੱਚ ਪੇਸ਼ ਕਰੋ ਅਤੇ ਉਹਨਾਂ ਨੂੰ ਆਪਣੀ ਪਸੰਦ ਦੇ ਕਿਸੇ ਵੀ ਡੀਲੀਮੀਟਰ ਨਾਲ ਵੱਖ ਕਰੋ, ਇੱਕ ਕੌਮਾ ਅਤੇ ਇੱਕ ਸਪੇਸ ਕਹੋ:
=TEXTJOIN(", ", TRUE, RegExpExtract(A5, "\d+"))
ਨੋਟ ਕਰੋ। ਕਿਉਂਕਿ TEXTJOIN ਫੰਕਸ਼ਨ ਸਿਰਫ਼ Microsoft 365, Excel 2021 ਅਤੇ Excel 2019 ਲਈ Excel ਵਿੱਚ ਉਪਲਬਧ ਹੈ, ਫਾਰਮੂਲਾ ਪੁਰਾਣੇ ਸੰਸਕਰਣਾਂ ਵਿੱਚ ਕੰਮ ਨਹੀਂ ਕਰੇਗਾ।
ਸਟ੍ਰਿੰਗ ਤੋਂ ਟੈਕਸਟ ਐਕਸਟਰੈਕਟ ਕਰਨ ਲਈ Regex
ਇਸ ਤੋਂ ਟੈਕਸਟ ਐਕਸਟਰੈਕਟ ਕਰਨਾ ਐਕਸਲ ਵਿੱਚ ਇੱਕ ਅਲਫਾਨਿਊਮੇਰਿਕ ਸਤਰ ਕਾਫ਼ੀ ਚੁਣੌਤੀਪੂਰਨ ਕੰਮ ਹੈ। regex ਦੇ ਨਾਲ, ਇਹ ਪਾਈ ਵਾਂਗ ਆਸਾਨ ਹੋ ਜਾਂਦਾ ਹੈ। ਸਿਰਫ਼ ਹਰ ਚੀਜ਼ ਨਾਲ ਮੇਲ ਕਰਨ ਲਈ ਇੱਕ ਨਕਾਰਾਤਮਕ ਕਲਾਸ ਦੀ ਵਰਤੋਂ ਕਰੋ ਜੋ ਅੰਕ ਨਹੀਂ ਹੈ।
ਪੈਟਰਨ : [^\d]+
ਵਿਅਕਤੀਗਤ ਸੈੱਲਾਂ ਵਿੱਚ ਸਬਸਟਰਿੰਗ ਪ੍ਰਾਪਤ ਕਰਨ ਲਈ (ਸਪਿਲ ਰੇਂਜ) , ਫਾਰਮੂਲਾ ਹੈ:
=RegExpExtract(A5, "[^\d]+")
ਸਾਰੇ ਮੈਚਾਂ ਨੂੰ ਇੱਕ ਸੈੱਲ ਵਿੱਚ ਆਉਟਪੁੱਟ ਕਰਨ ਲਈ, TEXTJOIN ਵਿੱਚ RegExpExtract ਫੰਕਸ਼ਨ ਨੂੰ ਇਸ ਤਰ੍ਹਾਂ ਨੇਸਟ ਕਰੋ:
=TEXTJOIN("", TRUE, RegExpExtract(A5, "[^\d]+"))
ਨੂੰ Regex ਸਟ੍ਰਿੰਗ ਤੋਂ ਈਮੇਲ ਪਤਾ ਐਕਸਟਰੈਕਟ ਕਰੋ
ਬਹੁਤ ਵੱਖਰੀ ਜਾਣਕਾਰੀ ਵਾਲੀ ਸਤਰ ਤੋਂ ਈਮੇਲ ਪਤਾ ਕੱਢਣ ਲਈ, ਇੱਕ ਨਿਯਮਤ ਸਮੀਕਰਨ ਲਿਖੋ ਜੋ ਈਮੇਲ ਪਤਾ ਬਣਤਰ ਦੀ ਨਕਲ ਕਰਦਾ ਹੈ।
ਪੈਟਰਨ : [\w\.\-]+@[A-Za-z0-9\.\-]+\.[A-Za-z]{2,24}
ਇਸ ਰੀਜੈਕਸ ਨੂੰ ਤੋੜਨਾ , ਇੱਥੇ ਸਾਨੂੰ ਕੀ ਮਿਲਦਾ ਹੈ:
- [\w\.\-]+ ਇੱਕ ਉਪਭੋਗਤਾ ਨਾਮ ਹੈ ਜਿਸ ਵਿੱਚ 1 ਜਾਂ ਵੱਧ ਅੱਖਰ ਅੰਕ, ਅੰਡਰਸਕੋਰ, ਬਿੰਦੀਆਂ ਅਤੇ ਹਾਈਫਨ ਸ਼ਾਮਲ ਹੋ ਸਕਦੇ ਹਨ।
- @ ਚਿੰਨ੍ਹ
- [A-Za-z0-9\.\-]+ ਇੱਕ ਡੋਮੇਨ ਨਾਮ ਹੈ ਜਿਸ ਵਿੱਚ ਸ਼ਾਮਲ ਹਨ: ਵੱਡੇ ਅਤੇ ਛੋਟੇ ਅੱਖਰ, ਅੰਕ, ਹਾਈਫਨ ਅਤੇ ਬਿੰਦੀਆਂ (ਮਾਮਲੇ ਵਿੱਚਸਬਡੋਮੇਨਾਂ ਦਾ) ਇੱਥੇ ਅੰਡਰਸਕੋਰ ਦੀ ਇਜਾਜ਼ਤ ਨਹੀਂ ਹੈ, ਇਸਲਈ 3 ਵੱਖ-ਵੱਖ ਅੱਖਰ ਸੈੱਟ (ਜਿਵੇਂ ਕਿ A-Z a-z ਅਤੇ 0-9) \w ਦੀ ਬਜਾਏ ਵਰਤੇ ਜਾਂਦੇ ਹਨ ਜੋ ਕਿਸੇ ਅੱਖਰ, ਅੰਕ ਜਾਂ ਅੰਡਰਸਕੋਰ ਨਾਲ ਮੇਲ ਖਾਂਦੇ ਹਨ।
- \[A-Za-z ]{2,24} ਇੱਕ ਉੱਚ-ਪੱਧਰੀ ਡੋਮੇਨ ਹੈ। ਵੱਡੇ ਅਤੇ ਛੋਟੇ ਅੱਖਰਾਂ ਤੋਂ ਬਾਅਦ ਇੱਕ ਬਿੰਦੀ ਹੁੰਦੀ ਹੈ। ਜ਼ਿਆਦਾਤਰ ਉੱਚ-ਪੱਧਰੀ ਡੋਮੇਨ 3-ਅੱਖਰਾਂ ਦੇ ਹੁੰਦੇ ਹਨ (ਜਿਵੇਂ ਕਿ .com .org, .edu, ਆਦਿ), ਪਰ ਸਿਧਾਂਤਕ ਤੌਰ 'ਤੇ ਇਸ ਵਿੱਚ 2 ਤੋਂ 24 ਅੱਖਰ (ਸਭ ਤੋਂ ਲੰਬਾ ਰਜਿਸਟਰਡ TLD) ਹੋ ਸਕਦਾ ਹੈ।
ਇਹ ਮੰਨ ਕੇ ਕਿ ਸਤਰ A5 ਵਿੱਚ ਹੈ ਅਤੇ ਪੈਟਰਨ A2 ਵਿੱਚ ਹੈ, ਇੱਕ ਈਮੇਲ ਪਤਾ ਐਕਸਟਰੈਕਟ ਕਰਨ ਦਾ ਫਾਰਮੂਲਾ ਹੈ:
=RegExpExtract(A5, $A$2)
ਈਮੇਲ ਤੋਂ ਡੋਮੇਨ ਨੂੰ ਐਕਸਟਰੈਕਟ ਕਰਨ ਲਈ Regex
ਜਦੋਂ ਇਹ ਈਮੇਲ ਡੋਮੇਨ ਨੂੰ ਐਕਸਟਰੈਕਟ ਕਰਨ ਲਈ ਆਉਂਦਾ ਹੈ, ਸਭ ਤੋਂ ਪਹਿਲਾਂ ਜੋ ਮਨ ਵਿੱਚ ਆਉਂਦਾ ਹੈ ਉਹ ਟੈਕਸਟ ਲੱਭਣ ਲਈ ਇੱਕ ਕੈਪਚਰਿੰਗ ਸਮੂਹ ਦੀ ਵਰਤੋਂ ਕਰਨਾ ਹੈ ਜੋ ਤੁਰੰਤ @ ਅੱਖਰ ਦੀ ਪਾਲਣਾ ਕਰਦਾ ਹੈ।
ਪੈਟਰਨ : @([A-Za-z0 -9\.\-]+\[A-Za-z]{2,24})
ਇਸ ਨੂੰ ਸਾਡੇ RegExp ਫੰਕਸ਼ਨ ਵਿੱਚ ਸਰਵ ਕਰੋ:
=RegExpExtract(A5, "@([A-Za-z0-9\.\-]+\.[A-Za-z]{2,24})")
ਅਤੇ ਤੁਹਾਨੂੰ ਇਹ ਨਤੀਜਾ ਮਿਲੇਗਾ:
ਕਲਾਸਿਕ ਰੈਗੂਲਰ ਸਮੀਕਰਨਾਂ ਦੇ ਨਾਲ, ਕੈਪਚਰਿੰਗ ਗਰੁੱਪ ਤੋਂ ਬਾਹਰ ਦੀ ਕੋਈ ਵੀ ਚੀਜ਼ ਐਕਸਟਰੈਕਸ਼ਨ ਵਿੱਚ ਸ਼ਾਮਲ ਨਹੀਂ ਕੀਤੀ ਜਾਂਦੀ। ਕੋਈ ਨਹੀਂ ਜਾਣਦਾ ਕਿ ਕਿਉਂ VBA RegEx ਵੱਖਰੇ ਢੰਗ ਨਾਲ ਕੰਮ ਕਰਦਾ ਹੈ ਅਤੇ "@" ਨੂੰ ਵੀ ਕੈਪਚਰ ਕਰਦਾ ਹੈ। ਇਸ ਤੋਂ ਛੁਟਕਾਰਾ ਪਾਉਣ ਲਈ, ਤੁਸੀਂ ਨਤੀਜੇ ਵਿੱਚੋਂ ਪਹਿਲੇ ਅੱਖਰ ਨੂੰ ਇੱਕ ਖਾਲੀ ਸਤਰ ਨਾਲ ਬਦਲ ਕੇ ਹਟਾ ਸਕਦੇ ਹੋ।
=REPLACE(RegExpExtract(A5, "@([a-z\d][a-z\d\-\.]*\.[a-z]{2,})", 1, FALSE), 1, 1, "")
ਫੋਨ ਨੰਬਰਾਂ ਨੂੰ ਐਕਸਟਰੈਕਟ ਕਰਨ ਲਈ ਰੈਗੂਲਰ ਸਮੀਕਰਨ
ਫੋਨ ਨੰਬਰ ਬਹੁਤ ਸਾਰੇ ਵੱਖ-ਵੱਖ ਤਰੀਕਿਆਂ ਨਾਲ ਲਿਖਿਆ ਜਾ ਸਕਦਾ ਹੈ, ਜਿਸ ਕਾਰਨ ਸਭ ਦੇ ਅਧੀਨ ਕੰਮ ਕਰਨ ਵਾਲੇ ਹੱਲ ਨਾਲ ਆਉਣਾ ਅਸੰਭਵ ਹੈ(\d{4}ਸਟ੍ਰਿੰਗ ਤੋਂ
ਤਾਰੀਖ ਨੂੰ ਐਕਸਟਰੈਕਟ ਕਰਨ ਲਈ ਇੱਕ ਨਿਯਮਤ ਸਮੀਕਰਨ ਉਸ ਫਾਰਮੈਟ 'ਤੇ ਨਿਰਭਰ ਕਰਦਾ ਹੈ ਜਿਸ ਵਿੱਚ ਮਿਤੀ ਇੱਕ ਸਤਰ ਦੇ ਅੰਦਰ ਦਿਖਾਈ ਦਿੰਦੀ ਹੈ। ਉਦਾਹਰਨ ਲਈ:
1/1/21 ਜਾਂ 01/01/2021 ਵਰਗੀਆਂ ਤਾਰੀਖਾਂ ਨੂੰ ਐਕਸਟਰੈਕਟ ਕਰਨ ਲਈ, regex ਹੈ: \d{1,2}\/\d{1,2}\/(\d {4}ਹਾਲਾਤ ਫਿਰ ਵੀ, ਤੁਸੀਂ ਆਪਣੇ ਡੇਟਾਸੈਟ ਵਿੱਚ ਵਰਤੇ ਗਏ ਸਾਰੇ ਫਾਰਮੈਟਾਂ ਨੂੰ ਲਿਖ ਸਕਦੇ ਹੋ ਅਤੇ ਉਹਨਾਂ ਨਾਲ ਮੇਲ ਕਰਨ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰ ਸਕਦੇ ਹੋ।
ਇਸ ਉਦਾਹਰਨ ਲਈ, ਅਸੀਂ ਇੱਕ regex ਬਣਾਉਣ ਜਾ ਰਹੇ ਹਾਂ ਜੋ ਇਹਨਾਂ ਵਿੱਚੋਂ ਕਿਸੇ ਵੀ ਫਾਰਮੈਟ ਵਿੱਚ ਫ਼ੋਨ ਨੰਬਰ ਕੱਢੇਗਾ:
(123) 345-6789 (123) 345 6789 (123)3456789 123- 345-6789 | 123.345.6789 123 345 6789 1233456789 |
ਪੈਟਰਨ : \(?\d{3}[-\. \)]*\d{3}[-\. ]?\d{4}\b
- ਪਹਿਲਾ ਭਾਗ \(?\d{3} ਜ਼ੀਰੋ ਜਾਂ ਇੱਕ ਓਪਨਿੰਗ ਬਰੈਕਟ ਨਾਲ ਮੇਲ ਖਾਂਦਾ ਹੈ ਅਤੇ ਉਸ ਤੋਂ ਬਾਅਦ ਤਿੰਨ ਅੰਕ d{3}।
- [-\. \)]* ਭਾਗ ਦਾ ਅਰਥ ਹੈ ਵਰਗ ਬਰੈਕਟਾਂ ਵਿੱਚ ਕੋਈ ਵੀ ਅੱਖਰ ਜੋ 0 ਜਾਂ ਇਸ ਤੋਂ ਵੱਧ ਵਾਰ ਦਿਖਾਈ ਦਿੰਦਾ ਹੈ: ਹਾਈਫਨ, ਪੀਰੀਅਡ, ਸਪੇਸ ਜਾਂ ਬੰਦ ਬਰੈਕਟ।
- ਅੱਗੇ, ਸਾਡੇ ਕੋਲ ਦੁਬਾਰਾ ਤਿੰਨ ਅੰਕ ਹਨ d{3} ਤੋਂ ਬਾਅਦ ਕੋਈ ਹਾਈਫਨ, ਪੀਰੀਅਡ ਜਾਂ ਸਪੇਸ [-\. ]? 0 ਜਾਂ 1 ਵਾਰ ਦਿਖਾਈ ਦਿੰਦਾ ਹੈ।
- ਉਸ ਤੋਂ ਬਾਅਦ, ਚਾਰ ਅੰਕਾਂ ਦਾ ਇੱਕ ਸਮੂਹ ਹੁੰਦਾ ਹੈ \d{4}।
- ਅੰਤ ਵਿੱਚ, ਇੱਕ ਸ਼ਬਦ ਸੀਮਾ \b ਇਹ ਪਰਿਭਾਸ਼ਿਤ ਕਰਦਾ ਹੈ ਕਿ ਅਸੀਂ ਇੱਕ ਫ਼ੋਨ ਨੰਬਰ ਹਾਂ ਖੋਜ ਕਰਨਾ ਵੱਡੀ ਸੰਖਿਆ ਦਾ ਹਿੱਸਾ ਨਹੀਂ ਹੋ ਸਕਦਾ।
ਪੂਰਾ ਫਾਰਮੂਲਾ ਇਹ ਆਕਾਰ ਲੈਂਦਾ ਹੈ:
=RegExpExtract(A5, "\(?\d{3}[-\. \)]*\d{3}[-\. ]?\d{4}\b")
ਕਿਰਪਾ ਕਰਕੇ ਧਿਆਨ ਰੱਖੋ ਕਿ ਉਪਰੋਕਤ ਰੇਜੈਕਸ ਕੁਝ ਵਾਪਸ ਕਰ ਸਕਦਾ ਹੈ ਗਲਤ-ਸਕਾਰਾਤਮਕ ਨਤੀਜੇ ਜਿਵੇਂ ਕਿ 123) 456 7899 ਜਾਂ (123 456 7899. ਹੇਠਾਂ ਦਿੱਤਾ ਸੰਸਕਰਣ ਇਹਨਾਂ ਮੁੱਦਿਆਂ ਨੂੰ ਹੱਲ ਕਰਦਾ ਹੈ। ਹਾਲਾਂਕਿ, ਇਹ ਸੰਟੈਕਸ ਕੇਵਲ VBA RegExp ਫੰਕਸ਼ਨਾਂ ਵਿੱਚ ਕੰਮ ਕਰਦਾ ਹੈ, ਕਲਾਸਿਕ ਨਿਯਮਤ ਸਮੀਕਰਨਾਂ ਵਿੱਚ ਨਹੀਂ।
ਪੈਟਰਨ : (\(\d{3}\)ਦੋ ਅੱਖਰਾਂ ਦੇ ਵਿਚਕਾਰ ਟੈਕਸਟ ਨੂੰ ਬਾਹਰ ਕੱਢਣ ਲਈ out ਦੋ ਸਤਰ ਦੇ ਵਿਚਕਾਰ ਟੈਕਸਟ ਨੂੰ ਐਕਸਟਰੈਕਟ ਕਰਨ ਲਈ ਵੀ ਕੰਮ ਕਰੇਗਾ।
ਉਦਾਹਰਣ ਲਈ, "ਟੈਸਟ 1" ਅਤੇ "ਟੈਸਟ 2" ਵਿਚਕਾਰ ਸਭ ਕੁਝ ਪ੍ਰਾਪਤ ਕਰਨ ਲਈ, ਹੇਠਾਂ ਦਿੱਤੇ ਨਿਯਮਤ ਸਮੀਕਰਨ ਦੀ ਵਰਤੋਂ ਕਰੋ।
ਪੈਟਰਨ : ਟੈਸਟ 1(.*?)ਟੈਸਟ 2
ਪੂਰਾ ਫਾਰਮੂਲਾ ਹੈ:
=AblebitsRegexExtract(A5, "test 1(.*?)test 2")
URL ਤੋਂ ਡੋਮੇਨ ਐਕਸਟਰੈਕਟ ਕਰਨ ਲਈ Regex
ਨਿਯਮਿਤ ਸਮੀਕਰਨ ਦੇ ਨਾਲ ਵੀ, URL ਤੋਂ ਡੋਮੇਨ ਨਾਮ ਕੱਢਣਾ ਕੋਈ ਮਾਮੂਲੀ ਕੰਮ ਨਹੀਂ ਹੈ। ਮੁੱਖ ਤੱਤ ਜੋ ਚਾਲ ਕਰਦਾ ਹੈ ਗੈਰ-ਕੈਪਚਰਿੰਗ ਸਮੂਹ ਹੈ। ਆਪਣੇ ਅੰਤਮ ਟੀਚੇ 'ਤੇ ਨਿਰਭਰ ਕਰਦੇ ਹੋਏ, ਹੇਠਾਂ ਦਿੱਤੇ regexes ਵਿੱਚੋਂ ਇੱਕ ਚੁਣੋ।
ਸਬਡੋਮੇਨਾਂ ਸਮੇਤ ਪੂਰਾ ਡੋਮੇਨ ਨਾਮ ਪ੍ਰਾਪਤ ਕਰਨ ਲਈ
ਪੈਟਰਨ : (?: https?\: