ਵਿਸ਼ਾ - ਸੂਚੀ
ਇਸ ਟਿਊਟੋਰਿਅਲ ਵਿੱਚ, ਅਸੀਂ ਐਕਸਲ ਵਿੱਚ ਸਟ੍ਰਿੰਗਾਂ ਨਾਲ ਮੇਲ ਕਰਨ ਲਈ regex ਦੀ ਵਰਤੋਂ ਕਰਨ ਬਾਰੇ ਡੂੰਘਾਈ ਨਾਲ ਵਿਚਾਰ ਕਰਾਂਗੇ।
ਜਦੋਂ ਤੁਹਾਨੂੰ ਕਿਸੇ ਰੇਂਜ ਵਿੱਚ ਕੋਈ ਖਾਸ ਮੁੱਲ ਲੱਭਣ ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ ਸੈੱਲਾਂ ਦੇ, ਤੁਸੀਂ MATCH ਜਾਂ XMATCH ਫੰਕਸ਼ਨ ਦੀ ਵਰਤੋਂ ਕਰੋਗੇ। ਜਦੋਂ ਇੱਕ ਸੈੱਲ ਵਿੱਚ ਇੱਕ ਖਾਸ ਸਤਰ ਦੀ ਖੋਜ ਕੀਤੀ ਜਾਂਦੀ ਹੈ, ਤਾਂ FIND ਅਤੇ SEARCH ਫੰਕਸ਼ਨ ਕੰਮ ਆਉਂਦੇ ਹਨ। ਅਤੇ ਤੁਸੀਂ ਕਿਵੇਂ ਜਾਣਦੇ ਹੋ ਕਿ ਇੱਕ ਸੈੱਲ ਵਿੱਚ ਅਜਿਹੀ ਜਾਣਕਾਰੀ ਹੈ ਜੋ ਦਿੱਤੇ ਗਏ ਪੈਟਰਨ ਨਾਲ ਮੇਲ ਖਾਂਦੀ ਹੈ? ਸਪੱਸ਼ਟ ਹੈ, ਨਿਯਮਤ ਸਮੀਕਰਨ ਵਰਤ ਕੇ. ਪਰ ਬਾਕਸ ਤੋਂ ਬਾਹਰ ਐਕਸਲ ਰੀਜੈਕਸ ਦਾ ਸਮਰਥਨ ਨਹੀਂ ਕਰਦਾ! ਕੋਈ ਚਿੰਤਾ ਨਹੀਂ, ਅਸੀਂ ਇਸਨੂੰ ਇਸ ਲਈ ਮਜਬੂਰ ਕਰਾਂਗੇ :)
ਸਤਰਾਂ ਨਾਲ ਮੇਲ ਕਰਨ ਲਈ ਐਕਸਲ VBA Regex ਫੰਕਸ਼ਨ
ਜਿਵੇਂ ਕਿ ਇਹ ਰੈਗੂਲਰ ਸਮੀਕਰਨਾਂ ਦੀ ਵਰਤੋਂ ਕਰਨ ਲਈ ਹੈਡਿੰਗ ਤੋਂ ਬਿਲਕੁਲ ਸਪੱਸ਼ਟ ਹੈ ਐਕਸਲ ਵਿੱਚ, ਤੁਹਾਨੂੰ ਆਪਣਾ ਫੰਕਸ਼ਨ ਬਣਾਉਣ ਦੀ ਲੋੜ ਹੈ। ਖੁਸ਼ਕਿਸਮਤੀ ਨਾਲ, ਐਕਸਲ ਦੇ VBA ਵਿੱਚ ਇੱਕ ਇਨਬਿਲਟ RegExp ਆਬਜੈਕਟ ਹੈ, ਜਿਸਨੂੰ ਤੁਸੀਂ ਆਪਣੇ ਕੋਡ ਵਿੱਚ ਵਰਤ ਸਕਦੇ ਹੋ ਜਿਵੇਂ ਕਿ ਹੇਠਾਂ ਦਿਖਾਇਆ ਗਿਆ ਹੈ:
ਪਬਲਿਕ ਫੰਕਸ਼ਨ RegExpMatch(ਇੰਨਪੁਟ_ਰੇਂਜ ਏਜ਼ ਰੇਂਜ, ਪੈਟਰਨ ਐਜ਼ ਸਟਰਿੰਗ, ਵਿਕਲਪਿਕ ਮੈਚ_ਕੇਸ ਐਜ਼ ਬੂਲੀਅਨ = ਟਰੂ) ਦੇ ਰੂਪ ਵਿੱਚ। ਨਤੀਜਿਆਂ ਨੂੰ ਸਟੋਰ ਕਰਨ ਲਈ ਵੇਰੀਐਂਟ ਡਿਮ arRes() ਵੇਰੀਐਂਟ 'ਐਰੇ ਵਜੋਂ ਡਿਮ iInputCurRow, iInputCurCol, cntInputRows, cntInputCols As Long' ਸਰੋਤ ਰੇਂਜ ਵਿੱਚ ਮੌਜੂਦਾ ਕਤਾਰ ਦਾ ਸੂਚਕਾਂਕ, ਸਰੋਤ ਰੇਂਜ ਵਿੱਚ ਮੌਜੂਦਾ ਕਾਲਮ ਦਾ ਸੂਚਕਾਂਕ, ਕਤਾਰਾਂ ਦੀ ਗਿਣਤੀ, ਗਿਣਤੀ ਕਾਲਮ ਔਨ ਐਰਰ GoTo ErrHandl RegExpMatch = arRes ਸੈੱਟ regex = CreateObject ( "VBScript.RegExp" ) regex.pattern = ਪੈਟਰਨ regex.Global = True regex.MultiLine = True ਜੇਕਰ True = match_case ਫਿਰ = regex. ਅੰਤਸਮੀਕਰਨ।ਪੈਟਰਨ : \b[\w\.\-]+@[A-Za-z0-9]+[A-Za-z0-9\.\- ]*[A-Za-z0-9]+\। :
- ਉਪਭੋਗਤਾ ਨਾਮ ਵਿੱਚ ਅੱਖਰ, ਨੰਬਰ, ਅੰਡਰਸਕੋਰ, ਬਿੰਦੀਆਂ ਅਤੇ ਹਾਈਫਨ ਸ਼ਾਮਲ ਹੋ ਸਕਦੇ ਹਨ। ਇਹ ਧਿਆਨ ਵਿੱਚ ਰੱਖਦੇ ਹੋਏ ਕਿ \w ਕਿਸੇ ਵੀ ਅੱਖਰ, ਅੰਕ ਜਾਂ ਅੰਡਰਸਕੋਰ ਨਾਲ ਮੇਲ ਖਾਂਦਾ ਹੈ, ਸਾਨੂੰ ਹੇਠਾਂ ਦਿੱਤੇ regex ਮਿਲਦਾ ਹੈ: [\w\.\-]+
- ਡੋਮੇਨ ਨਾਮ ਵਿੱਚ ਵੱਡੇ ਅਤੇ ਛੋਟੇ ਅੱਖਰ ਸ਼ਾਮਲ ਹੋ ਸਕਦੇ ਹਨ, ਅੰਕ, ਹਾਈਫਨ (ਪਰ ਪਹਿਲੀ ਜਾਂ ਆਖਰੀ ਸਥਿਤੀ ਵਿੱਚ ਨਹੀਂ) ਅਤੇ ਬਿੰਦੀਆਂ (ਉਪਡੋਮੇਨਾਂ ਦੇ ਮਾਮਲੇ ਵਿੱਚ)। ਕਿਉਂਕਿ ਅੰਡਰਸਕੋਰ ਦੀ ਇਜਾਜ਼ਤ ਨਹੀਂ ਹੈ, \w ਦੀ ਬਜਾਏ ਅਸੀਂ 3 ਵੱਖ-ਵੱਖ ਅੱਖਰ ਸੈੱਟ ਵਰਤ ਰਹੇ ਹਾਂ: [A-Za-z0-9]+[A-Za-z0-9\.\-]*[A-Za-z0-9 ]+
- ਟੌਪ-ਲੈਵਲ ਡੋਮੇਨ ਵਿੱਚ ਵੱਡੇ ਅਤੇ ਛੋਟੇ ਅੱਖਰਾਂ ਤੋਂ ਬਾਅਦ ਇੱਕ ਬਿੰਦੀ ਹੁੰਦੀ ਹੈ। ਇਸ ਵਿੱਚ 2 ਤੋਂ 24 ਅੱਖਰ ਹੋ ਸਕਦੇ ਹਨ (ਇਸ ਵੇਲੇ ਮੌਜੂਦ ਸਭ ਤੋਂ ਲੰਬਾ TLD): \[A-Za-z]{2,24}
ਨੋਟ। ਪੈਟਰਨ ਮੰਨਦਾ ਹੈ ਕਿ ਡੋਮੇਨ ਨਾਮ ਵਿੱਚ 2 ਜਾਂ ਵੱਧ ਅੱਖਰ-ਅੰਕ ਵਾਲੇ ਅੱਖਰ ਹਨ।
A5 ਵਿੱਚ ਮੂਲ ਟੈਕਸਟ ਅਤੇ A5 ਵਿੱਚ ਪੈਟਰਨ ਦੇ ਨਾਲ, ਫਾਰਮੂਲਾ ਇਹ ਆਕਾਰ ਲੈਂਦਾ ਹੈ:
=RegExpMatch(A5, $A$2)
ਜਾਂ ਤੁਸੀਂ ਇੱਕ ਸਧਾਰਨ ਨਿਯਮਤ ਵਰਤੋਂ ਕਰ ਸਕਦੇ ਹੋ ਇੱਕ ਛੋਟੇ ਜਾਂ ਵੱਡੇ ਅੱਖਰ ਸੈੱਟ ਨਾਲ ਈਮੇਲ ਪ੍ਰਮਾਣਿਕਤਾ ਲਈ ਸਮੀਕਰਨ:
ਪੈਟਰਨ : \b[\w\.\-]+@[a-z0-9]+[a- z0-9\.\-]*[a-z0-9]+\[a-z]{2,24}\b
ਪਰ ਆਪਣੇ ਫਾਰਮੂਲੇ ਨੂੰ ਕੇਸ-ਸੰਵੇਦਨਸ਼ੀਲ ਬਣਾਓ:
=RegExpMatch(A5, $A$2, FALSE)
ਮੇਲ ਰੇਜੈਕਸ ਨਾਲ ਐਕਸਲ IF ਫਾਰਮੂਲਾ
ਇਸ ਤੱਥ ਦੇ ਕਾਰਨ ਕਿ ਇਨਬਿਲਟ ਅਤੇ ਕਸਟਮਫੰਕਸ਼ਨ ਵਧੀਆ ਢੰਗ ਨਾਲ ਚੱਲਦੇ ਹਨ, ਅਜਿਹਾ ਕੁਝ ਵੀ ਨਹੀਂ ਹੈ ਜੋ ਤੁਹਾਨੂੰ ਉਹਨਾਂ ਨੂੰ ਇੱਕ ਫਾਰਮੂਲੇ ਵਿੱਚ ਇਕੱਠੇ ਵਰਤਣ ਤੋਂ ਰੋਕਦਾ ਹੈ।
ਕਿਸੇ ਚੀਜ਼ ਨੂੰ ਵਾਪਸ ਕਰਨ ਜਾਂ ਗਣਨਾ ਕਰਨ ਲਈ ਜੇਕਰ ਇੱਕ ਰੈਗੂਲਰ ਸਮੀਕਰਨ ਮੇਲ ਖਾਂਦਾ ਹੈ ਅਤੇ ਕੁਝ ਹੋਰ ਜੇਕਰ ਇਹ ਮੇਲ ਨਹੀਂ ਖਾਂਦਾ ਹੈ, ਤਾਂ ਕਸਟਮ RegExpMatch ਨੂੰ ਏਮਬੈਡ ਕਰੋ IF ਦੇ ਲਾਜ਼ੀਕਲ ਟੈਕਸਟ ਵਿੱਚ ਫੰਕਸ਼ਨ:
IF(RegExpMatch(…), [value_if_true], [value_if_false])ਉਦਾਹਰਨ ਲਈ, ਜੇਕਰ A5 ਵਿੱਚ ਇੱਕ ਸਤਰ ਵਿੱਚ ਇੱਕ ਵੈਧ ਈਮੇਲ ਪਤਾ ਹੈ, ਤਾਂ ਤੁਸੀਂ "ਹਾਂ" ਵਾਪਸ ਕਰ ਸਕਦੇ ਹੋ; ਨਹੀਂ ਤਾਂ "ਨਹੀਂ"।
=IF(RegExpMatch(A5, $A$2,), "Yes", "No")
ਗਣਨਾ ਕਰੋ ਕਿ ਕੀ regex ਮੇਲ ਖਾਂਦਾ ਹੈ
ਕਿਉਂਕਿ ਮੂਲ ਐਕਸਲ ਫੰਕਸ਼ਨ ਰੈਗੂਲਰ ਸਮੀਕਰਨ ਦਾ ਸਮਰਥਨ ਨਹੀਂ ਕਰਦੇ, ਇਹ ਹੈ COUNTIS ਜਾਂ COUNTIFS ਫੰਕਸ਼ਨ ਵਿੱਚ ਸਿੱਧਾ ਇੱਕ regex ਪਾਉਣਾ ਸੰਭਵ ਨਹੀਂ ਹੈ। ਖੁਸ਼ਕਿਸਮਤੀ ਨਾਲ, ਤੁਸੀਂ ਸਾਡੇ ਕਸਟਮ ਫੰਕਸ਼ਨ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਇਸ ਕਾਰਜਕੁਸ਼ਲਤਾ ਦੀ ਨਕਲ ਕਰ ਸਕਦੇ ਹੋ।
ਮੰਨ ਲਓ ਕਿ ਤੁਸੀਂ ਫ਼ੋਨ ਨੰਬਰਾਂ ਨਾਲ ਮੇਲ ਕਰਨ ਲਈ ਇੱਕ regex ਦੀ ਵਰਤੋਂ ਕੀਤੀ ਹੈ ਅਤੇ ਕਾਲਮ B ਵਿੱਚ ਨਤੀਜਿਆਂ ਨੂੰ ਆਉਟਪੁੱਟ ਕੀਤਾ ਹੈ। ਇਹ ਪਤਾ ਲਗਾਉਣ ਲਈ ਕਿ ਕਿੰਨੇ ਸੈੱਲਾਂ ਵਿੱਚ ਫ਼ੋਨ ਨੰਬਰ ਹਨ, ਤੁਹਾਨੂੰ ਬੱਸ B5:B9 ਵਿੱਚ ਸਹੀ ਮੁੱਲਾਂ ਦੀ ਗਿਣਤੀ ਕਰਨ ਲਈ। ਅਤੇ ਇਹ ਮਿਆਰੀ COUNTIF ਫਾਰਮੂਲੇ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਆਸਾਨੀ ਨਾਲ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ:
=COUNTIF(B5:B9, TRUE)
ਤੁਹਾਡੀ ਵਰਕਸ਼ੀਟ ਵਿੱਚ ਕੋਈ ਵਾਧੂ ਕਾਲਮ ਨਹੀਂ ਚਾਹੁੰਦੇ ਹੋ? ਕੋਈ ਸਮੱਸਿਆ ਨਹੀ. ਇਹ ਧਿਆਨ ਵਿੱਚ ਰੱਖਦੇ ਹੋਏ ਕਿ ਸਾਡਾ ਕਸਟਮ ਫੰਕਸ਼ਨ ਇੱਕ ਸਮੇਂ ਵਿੱਚ ਇੱਕ ਤੋਂ ਵੱਧ ਸੈੱਲਾਂ ਦੀ ਪ੍ਰਕਿਰਿਆ ਕਰ ਸਕਦਾ ਹੈ ਅਤੇ ਐਕਸਲ ਦਾ SUM ਇੱਕ ਐਰੇ ਵਿੱਚ ਮੁੱਲ ਜੋੜ ਸਕਦਾ ਹੈ, ਤੁਸੀਂ ਇੱਥੇ ਕੀ ਕਰਦੇ ਹੋ:
- RegExpMatch ਨੂੰ ਇੱਕ ਰੇਂਜ ਹਵਾਲਾ ਸਪਲਾਈ ਕਰੋ, ਤਾਂ ਜੋ ਇਹ ਇੱਕ TRUE ਅਤੇ FALSE ਮੁੱਲਾਂ ਦੀ ਲੜੀ।
- ਲੋਜ਼ੀਕਲ ਮੁੱਲਾਂ ਨੂੰ ਇੱਕ ਅਤੇਜ਼ੀਰੋ।
- ਨਤੀਜੇ ਵਾਲੇ ਐਰੇ ਵਿੱਚ 1 ਅਤੇ 0 ਜੋੜਨ ਲਈ SUM ਫੰਕਸ਼ਨ ਪ੍ਰਾਪਤ ਕਰੋ।
=SUM(--RegExpMatch(A5:A9, $A$2))
ਰੇਜੈਕਸ ਮਿਲਾਨ ਅਲਟੀਮੇਟ ਸੂਟ ਦੇ ਨਾਲ
ਸਾਡੇ ਅਲਟੀਮੇਟ ਸੂਟ ਦੇ ਉਪਭੋਗਤਾ ਆਪਣੀਆਂ ਵਰਕਬੁੱਕਾਂ ਵਿੱਚ ਕੋਈ ਵੀਬੀਏ ਕੋਡ ਸ਼ਾਮਲ ਕੀਤੇ ਬਿਨਾਂ ਚਾਰ ਸ਼ਕਤੀਸ਼ਾਲੀ Regex ਫੰਕਸ਼ਨਾਂ ਦਾ ਲਾਭ ਲੈ ਸਕਦੇ ਹਨ ਕਿਉਂਕਿ ਉਹ ਐਡ-ਇਨ ਇੰਸਟਾਲੇਸ਼ਨ ਦੌਰਾਨ ਐਕਸਲ ਵਿੱਚ ਅਸਾਨੀ ਨਾਲ ਏਕੀਕ੍ਰਿਤ ਹੁੰਦੇ ਹਨ। ਸਾਡੇ ਕਸਟਮ ਫੰਕਸ਼ਨ ਸਟੈਂਡਰਡ .NET RegEx ਇੰਜਣ ਦੁਆਰਾ ਸੰਸਾਧਿਤ ਕੀਤੇ ਜਾਂਦੇ ਹਨ ਅਤੇ ਪੂਰੀ-ਵਿਸ਼ੇਸ਼ਤਾ ਵਾਲੇ ਕਲਾਸਿਕ ਨਿਯਮਤ ਸਮੀਕਰਨਾਂ ਦਾ ਸਮਰਥਨ ਕਰਦੇ ਹਨ।
ਕਸਟਮ RegexMatch ਫੰਕਸ਼ਨ ਦੀ ਵਰਤੋਂ ਕਿਵੇਂ ਕਰੀਏ
ਇਹ ਮੰਨ ਕੇ ਕਿ ਤੁਹਾਡੇ ਕੋਲ ਅਲਟੀਮੇਟ ਸੂਟ ਦਾ ਨਵੀਨਤਮ ਸੰਸਕਰਣ ਸਥਾਪਤ ਹੈ ( 2021.4 ਜਾਂ ਬਾਅਦ ਵਿੱਚ), ਤੁਸੀਂ ਦੋ ਸਧਾਰਨ ਪੜਾਵਾਂ ਵਿੱਚ ਇੱਕ Regex ਮੈਚ ਫਾਰਮੂਲਾ ਬਣਾ ਸਕਦੇ ਹੋ:
- Ablebits Data ਟੈਬ 'ਤੇ, Text ਗਰੁੱਪ ਵਿੱਚ, ਕਲਿੱਕ ਕਰੋ। Regex Tools .
- ਚੁਣੋ ਸਰੋਤ ਸਤਰ।
- ਆਪਣਾ ਪੈਟਰਨ ਦਰਜ ਕਰੋ।
- ਮੈਚ ਵਿਕਲਪ ਚੁਣੋ।
- ਨਤੀਜੇ ਨੂੰ ਫਾਰਮੂਲੇ ਦੇ ਰੂਪ ਵਿੱਚ ਪ੍ਰਾਪਤ ਕਰਨ ਲਈ, ਨਾ ਕਿ ਮੁੱਲਾਂ ਦੇ ਰੂਪ ਵਿੱਚ, <ਚੁਣੋ। 8>ਇੱਕ ਫਾਰਮੂਲੇ ਦੇ ਰੂਪ ਵਿੱਚ ਸੰਮਿਲਿਤ ਕਰੋ ਚੈੱਕ ਬਾਕਸ।
- ਮੈਚ ਬਟਨ 'ਤੇ ਕਲਿੱਕ ਕਰੋ।
ਇੱਕ ਪਲ ਬਾਅਦ, AblebitsRegexMatch ਫੰਕਸ਼ਨ ਤੁਹਾਡੇ ਡੇਟਾ ਦੇ ਸੱਜੇ ਪਾਸੇ ਇੱਕ ਨਵੇਂ ਕਾਲਮ ਵਿੱਚ ਸ਼ਾਮਲ ਕੀਤਾ ਜਾਂਦਾ ਹੈ।
ਹੇਠਾਂ ਦਿੱਤੇ ਸਕ੍ਰੀਨਸ਼ੌਟ ਵਿੱਚ, ਫੰਕਸ਼ਨ ਜਾਂਚ ਕਰਦਾ ਹੈ ਕਿ ਕਾਲਮ A ਵਿੱਚ ਸਟ੍ਰਿੰਗਾਂ ਵਿੱਚ 7-ਅੰਕ ਹਨ ਜਾਂ ਨਹੀਂ। ਨੰਬਰ ਜਾਂ ਨਹੀਂ।
ਸੁਝਾਅ:
- ਫੰਕ tion ਨੂੰ ਸਿੱਧਾ ਸੈੱਲ ਵਿੱਚ ਪਾਇਆ ਜਾ ਸਕਦਾ ਹੈਸਟੈਂਡਰਡ ਇਨਸਰਟ ਫੰਕਸ਼ਨ ਡਾਇਲਾਗ ਬਾਕਸ ਰਾਹੀਂ, ਜਿੱਥੇ ਇਸਨੂੰ AblebitsUDFs ਦੇ ਤਹਿਤ ਸ਼੍ਰੇਣੀਬੱਧ ਕੀਤਾ ਗਿਆ ਹੈ।
- ਮੂਲ ਰੂਪ ਵਿੱਚ, ਇੱਕ ਰੈਗੂਲਰ ਸਮੀਕਰਨ ਫਾਰਮੂਲੇ ਵਿੱਚ ਜੋੜਿਆ ਜਾਂਦਾ ਹੈ, ਪਰ ਤੁਸੀਂ ਇਹ ਵੀ ਰੱਖ ਸਕਦੇ ਹੋ ਇਸ ਨੂੰ ਇੱਕ ਵੱਖਰੇ ਸੈੱਲ ਵਿੱਚ. ਇਸਦੇ ਲਈ, ਦੂਜੀ ਆਰਗੂਮੈਂਟ ਲਈ ਇੱਕ ਸੈੱਲ ਰੈਫਰੈਂਸ ਦੀ ਵਰਤੋਂ ਕਰੋ।
- ਮੂਲ ਰੂਪ ਵਿੱਚ, ਫੰਕਸ਼ਨ ਕੇਸ-ਸੰਵੇਦਨਸ਼ੀਲ ਹੈ। ਕੇਸ-ਸੰਵੇਦਨਸ਼ੀਲ ਮੈਚਿੰਗ ਲਈ, (?i) ਪੈਟਰਨ ਦੀ ਵਰਤੋਂ ਕਰੋ।
ਵਧੇਰੇ ਜਾਣਕਾਰੀ ਲਈ, ਕਿਰਪਾ ਕਰਕੇ AblebitsRegexMatch ਫੰਕਸ਼ਨ ਦੇਖੋ।
ਇਸ ਤਰ੍ਹਾਂ ਐਕਸਲ ਵਿੱਚ ਰੈਗੂਲਰ ਐਕਸਪ੍ਰੈਸ਼ਨ ਮੈਚਿੰਗ ਕਰਨਾ ਹੈ। ਮੈਂ ਪੜ੍ਹਨ ਲਈ ਤੁਹਾਡਾ ਧੰਨਵਾਦ ਕਰਦਾ ਹਾਂ ਅਤੇ ਅਗਲੇ ਹਫ਼ਤੇ ਤੁਹਾਨੂੰ ਸਾਡੇ ਬਲੌਗ 'ਤੇ ਮਿਲਣ ਦੀ ਉਮੀਦ ਕਰਦਾ ਹਾਂ!
ਉਪਲੱਬਧ ਡਾਊਨਲੋਡ
Excel Regex ਮੈਚ ਉਦਾਹਰਨਾਂ (.xlsm ਫਾਈਲ)
Ultimate Suite 14- ਦਿਨ ਪੂਰੀ ਤਰ੍ਹਾਂ ਕੰਮ ਕਰਨ ਵਾਲਾ ਸੰਸਕਰਣ (.exe ਫਾਈਲ)
ਜੇਕਰ cntInputRows = input_range.Rows.Count cntInputCols = input_range.Columns.Count ReDim arRes(1 ਤੋਂ cntInputRows, 1 ਤੋਂ cntInputCols) ਲਈ iInputCurRow = 1 ਲਈ cntInputRows ਲਈ iInputCurCol = 1 ਤੋਂ cntInputRows ਲਈ iInputCurCol = 1. .Cells(iInputCurRow, iInputCurCol.Value) ਅਗਲਾ ਅਗਲਾ RegExpMatch = arRes ਐਗਜ਼ਿਟ ਫੰਕਸ਼ਨ ErrHandl: RegExpMatch = CVErr(xlErrValue) ਅੰਤ ਫੰਕਸ਼ਨVBA ਸੰਪਾਦਕ ਵਿੱਚ ਕੋਡ ਪੇਸਟ ਕਰੋ, ਅਤੇ ਤੁਹਾਡਾ ਨਵਾਂ ਫੰਕਸ਼ਨ RegEx2 ਹੈ ਵਰਤਣ ਲਈ ਤਿਆਰ. ਜੇਕਰ ਤੁਸੀਂ VBA ਨਾਲ ਬਹੁਤ ਤਜਰਬੇਕਾਰ ਨਹੀਂ ਹੋ, ਤਾਂ ਇਹ ਗਾਈਡ ਮਦਦਗਾਰ ਹੋ ਸਕਦੀ ਹੈ: Excel ਵਿੱਚ VBA ਕੋਡ ਕਿਵੇਂ ਦਾਖਲ ਕਰਨਾ ਹੈ।
ਨੋਟ ਕਰੋ। ਕੋਡ ਪਾਉਣ ਤੋਂ ਬਾਅਦ, ਆਪਣੀ ਫਾਈਲ ਨੂੰ ਮੈਕਰੋ-ਸਮਰੱਥ ਵਰਕਬੁੱਕ (.xlsm) ਦੇ ਰੂਪ ਵਿੱਚ ਸੁਰੱਖਿਅਤ ਕਰਨਾ ਯਾਦ ਰੱਖੋ।
RegExpMatch ਸਿੰਟੈਕਸ
RegExpMatch ਫੰਕਸ਼ਨ ਜਾਂਚ ਕਰਦਾ ਹੈ ਕਿ ਸਰੋਤ ਸਤਰ ਦਾ ਕੋਈ ਹਿੱਸਾ ਨਿਯਮਤ ਸਮੀਕਰਨ ਨਾਲ ਮੇਲ ਖਾਂਦਾ ਹੈ ਜਾਂ ਨਹੀਂ। ਨਤੀਜਾ ਇੱਕ ਬੁਲੀਅਨ ਮੁੱਲ ਹੈ: ਜੇਕਰ ਘੱਟੋ-ਘੱਟ ਇੱਕ ਮੇਲ ਮਿਲਦਾ ਹੈ ਤਾਂ TRUE, ਨਹੀਂ ਤਾਂ FALSE।
ਸਾਡੇ ਕਸਟਮ ਫੰਕਸ਼ਨ ਵਿੱਚ 3 ਆਰਗੂਮੈਂਟ ਹਨ - ਪਹਿਲੇ ਦੋ ਦੀ ਲੋੜ ਹੈ ਅਤੇ ਆਖਰੀ ਇੱਕ ਵਿਕਲਪਿਕ ਹੈ:
RegExpMatch(text .ਫੰਕਸ਼ਨ Excel 365, Excel 2021, Excel 2019, Excel 2016, Excel 2013 ਅਤੇ Excel 2010 ਦੇ ਸਾਰੇ ਸੰਸਕਰਣਾਂ ਵਿੱਚ ਕੰਮ ਕਰਦਾ ਹੈ।
3 ਚੀਜ਼ਾਂ ਜੋ ਤੁਸੀਂ RegExpMatch ਬਾਰੇ ਪਤਾ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ
ਇਸ ਤੋਂ ਪਹਿਲਾਂ ਕਿ ਅਸੀਂ ਵਿਹਾਰਕ ਗਣਨਾਵਾਂ 'ਤੇ ਪਹੁੰਚੀਏ, ਕਿਰਪਾ ਕਰਕੇ ਹੇਠਾਂ ਦਿੱਤੇ ਬਿੰਦੂਆਂ ਵੱਲ ਧਿਆਨ ਦਿਓ ਜੋ ਕੁਝ ਤਕਨੀਕੀਤਾਵਾਂ ਨੂੰ ਸਪੱਸ਼ਟ ਕਰਦੇ ਹਨ:
- ਫੰਕਸ਼ਨ ਇੱਕ ਸਿੰਗਲ ਸੈੱਲ<9 ਨੂੰ ਪ੍ਰਕਿਰਿਆ ਕਰ ਸਕਦਾ ਹੈ> ਜਾਂ ਸੈੱਲਾਂ ਦੀ ਰੇਂਜ । ਬਾਅਦ ਵਾਲੇ ਕੇਸ ਵਿੱਚ, ਨਤੀਜੇ ਇੱਕ ਗਤੀਸ਼ੀਲ ਐਰੇ, ਜਾਂ ਸਪਿਲ ਰੇਂਜ ਦੇ ਰੂਪ ਵਿੱਚ ਗੁਆਂਢੀ ਸੈੱਲਾਂ ਵਿੱਚ ਵਾਪਸ ਕੀਤੇ ਜਾਂਦੇ ਹਨ, ਜਿਵੇਂ ਕਿ ਇਸ ਉਦਾਹਰਨ ਵਿੱਚ ਦਿਖਾਇਆ ਗਿਆ ਹੈ।
- ਮੂਲ ਰੂਪ ਵਿੱਚ, ਫੰਕਸ਼ਨ ਕੇਸ-ਸੰਵੇਦਨਸ਼ੀਲ<ਹੁੰਦਾ ਹੈ। 9>. ਟੈਕਸਟ ਕੇਸ ਨੂੰ ਅਣਡਿੱਠ ਕਰਨ ਲਈ, match_case ਆਰਗੂਮੈਂਟ ਨੂੰ FALSE 'ਤੇ ਸੈੱਟ ਕਰੋ। VBA Regexp ਸੀਮਾਵਾਂ ਦੇ ਕਾਰਨ, ਕੇਸ-ਸੰਵੇਦਨਸ਼ੀਲ ਪੈਟਰਨ (?i) ਸਮਰਥਿਤ ਨਹੀਂ ਹੈ।
- ਜੇਕਰ ਕੋਈ ਵੈਧ ਪੈਟਰਨ ਨਹੀਂ ਮਿਲਦਾ, ਤਾਂ ਫੰਕਸ਼ਨ FALSE ਦਿੰਦਾ ਹੈ; ਜੇਕਰ ਪੈਟਰਨ ਅਵੈਧ ਹੈ , ਤਾਂ ਇੱਕ #VALUE! ਗਲਤੀ ਹੁੰਦੀ ਹੈ।
ਹੇਠਾਂ, ਤੁਹਾਨੂੰ ਕੁਝ ਰੇਜੈਕਸ ਮੈਚ ਉਦਾਹਰਨਾਂ ਮਿਲਣਗੀਆਂ ਜੋ ਪ੍ਰਦਰਸ਼ਨ ਦੇ ਉਦੇਸ਼ਾਂ ਲਈ ਬਣਾਈਆਂ ਗਈਆਂ ਸਨ। ਅਸੀਂ ਇਸ ਗੱਲ ਦੀ ਗਾਰੰਟੀ ਨਹੀਂ ਦੇ ਸਕਦੇ ਹਾਂ ਕਿ ਸਾਡੇ ਪੈਟਰਨ ਤੁਹਾਡੀ ਅਸਲ ਵਰਕਸ਼ੀਟਾਂ ਵਿੱਚ ਇਨਪੁਟ ਡੇਟਾ ਦੀ ਇੱਕ ਵਿਸ਼ਾਲ ਸ਼੍ਰੇਣੀ ਦੇ ਨਾਲ ਬਿਨਾਂ ਕਿਸੇ ਨੁਕਸ ਦੇ ਕੰਮ ਕਰਨਗੇ। ਉਤਪਾਦਨ ਵਿੱਚ ਪਾਉਣ ਤੋਂ ਪਹਿਲਾਂ, ਆਪਣੀਆਂ ਲੋੜਾਂ ਅਨੁਸਾਰ ਸਾਡੇ ਨਮੂਨੇ ਪੈਟਰਨਾਂ ਦੀ ਜਾਂਚ ਕਰਨਾ ਅਤੇ ਉਹਨਾਂ ਨੂੰ ਵਿਵਸਥਿਤ ਕਰਨਾ ਯਕੀਨੀ ਬਣਾਓ।
ਐਕਸਲ ਵਿੱਚ ਸਟ੍ਰਿੰਗਾਂ ਨਾਲ ਮੇਲ ਕਰਨ ਲਈ regex ਦੀ ਵਰਤੋਂ ਕਿਵੇਂ ਕਰੀਏ
ਜਦੋਂ ਤੁਸੀਂ ਸਾਰੀਆਂ ਸਟ੍ਰਿੰਗਾਂ ਨਾਲ ਮੇਲ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹੋ। ਇੱਕੋ ਪੈਟਰਨ,ਨਿਯਮਤ ਸਮੀਕਰਨ ਇੱਕ ਆਦਰਸ਼ ਹੱਲ ਹਨ।
ਮੰਨ ਲਓ ਕਿ ਤੁਹਾਡੇ ਕੋਲ ਸੈੱਲਾਂ ਦੀ ਇੱਕ ਸੀਮਾ ਹੈ (A5:A9) ਜਿਸ ਵਿੱਚ ਕੁਝ ਆਈਟਮਾਂ ਬਾਰੇ ਵੱਖ-ਵੱਖ ਵੇਰਵੇ ਸ਼ਾਮਲ ਹਨ। ਤੁਸੀਂ ਇਹ ਜਾਣਨਾ ਚਾਹੁੰਦੇ ਹੋ ਕਿ ਕਿਹੜੇ ਸੈੱਲਾਂ ਵਿੱਚ SKUs ਹਨ। ਇਹ ਮੰਨਦੇ ਹੋਏ ਕਿ ਹਰੇਕ SKU ਵਿੱਚ 2 ਵੱਡੇ ਅੱਖਰ, ਇੱਕ ਹਾਈਫਨ, ਅਤੇ 3 ਅੰਕ ਹੁੰਦੇ ਹਨ, ਤੁਸੀਂ ਇਹਨਾਂ ਨੂੰ ਹੇਠਾਂ ਦਿੱਤੇ ਸਮੀਕਰਨ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਮਿਲਾ ਸਕਦੇ ਹੋ।
ਪੈਟਰਨ : \b[A-Z]{2}-\ d{3}\b
ਜਿੱਥੇ [A-Z]{2} ਦਾ ਅਰਥ ਹੈ A ਤੋਂ Z ਤੱਕ ਕੋਈ ਵੀ 2 ਵੱਡੇ ਅੱਖਰ ਅਤੇ \d{3} ਦਾ ਅਰਥ ਹੈ 0 ਤੋਂ 9 ਤੱਕ ਕੋਈ ਵੀ 3 ਅੰਕ। \b ਅੱਖਰ ਇੱਕ ਸ਼ਬਦ ਨੂੰ ਦਰਸਾਉਂਦਾ ਹੈ ਸੀਮਾ, ਭਾਵ ਇੱਕ SKU ਇੱਕ ਵੱਖਰਾ ਸ਼ਬਦ ਹੈ, ਅਤੇ ਇੱਕ ਵੱਡੀ ਸਤਰ ਦਾ ਹਿੱਸਾ ਨਹੀਂ ਹੈ ਜਿਵੇਂ ਕਿ 23-MAR-2022।
ਸਥਾਪਿਤ ਪੈਟਰਨ ਦੇ ਨਾਲ, ਅਸੀਂ ਇੱਕ ਫਾਰਮੂਲਾ ਲਿਖਣ ਲਈ ਅੱਗੇ ਵਧ ਸਕਦੇ ਹਾਂ। ਜ਼ਰੂਰੀ ਤੌਰ 'ਤੇ, ਇੱਕ ਕਸਟਮ ਫੰਕਸ਼ਨ ਦੀ ਵਰਤੋਂ ਕਰਨਾ ਇੱਕ ਮੂਲ ਤੋਂ ਵੱਖਰਾ ਨਹੀਂ ਹੈ। ਜਿਵੇਂ ਹੀ ਤੁਸੀਂ ਇੱਕ ਫਾਰਮੂਲਾ ਟਾਈਪ ਕਰਨਾ ਸ਼ੁਰੂ ਕਰਦੇ ਹੋ, ਫੰਕਸ਼ਨ ਦਾ ਨਾਮ ਐਕਸਲ ਦੇ ਆਟੋਕੰਪਲੀਟ ਦੁਆਰਾ ਸੁਝਾਈ ਗਈ ਸੂਚੀ ਵਿੱਚ ਦਿਖਾਈ ਦੇਵੇਗਾ। ਹਾਲਾਂਕਿ, ਡਾਇਨਾਮਿਕ ਐਰੇ ਐਕਸਲ (ਮਾਈਕ੍ਰੋਸੌਫਟ 365 ਅਤੇ ਐਕਸਲ 2021) ਅਤੇ ਰਵਾਇਤੀ ਐਕਸਲ (2019 ਅਤੇ ਪੁਰਾਣੇ ਸੰਸਕਰਣਾਂ) ਵਿੱਚ ਕੁਝ ਸੂਖਮਤਾਵਾਂ ਹਨ।
ਇੱਕ ਸੈੱਲ ਵਿੱਚ ਸਟ੍ਰਿੰਗ ਨੂੰ ਮਿਲਾਓ
ਇੱਕ ਸਤਰ ਨਾਲ ਮੇਲ ਕਰਨ ਲਈ ਇੱਕ ਸਿੰਗਲ ਸੈੱਲ ਵਿੱਚ, ਪਹਿਲੇ ਆਰਗੂਮੈਂਟ ਵਿੱਚ ਉਸ ਸੈੱਲ ਨੂੰ ਵੇਖੋ। ਦੂਜੀ ਆਰਗੂਮੈਂਟ ਵਿੱਚ ਇੱਕ ਰੈਗੂਲਰ ਸਮੀਕਰਨ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ।
=RegExpMatch(A5, "\b[A-Z]{2}-\d{3}\b")
ਪੈਟਰਨ ਨੂੰ ਇੱਕ ਪੂਰਵ-ਪਰਿਭਾਸ਼ਿਤ ਸੈੱਲ ਵਿੱਚ ਵੀ ਰੱਖਿਆ ਜਾ ਸਕਦਾ ਹੈ, ਜੋ ਇੱਕ ਸੰਪੂਰਨ ਸੰਦਰਭ ($A$2):<3 ਨਾਲ ਬੰਦ ਹੈ।>
=RegExpMatch(A5, $A$2)
ਪਹਿਲੇ ਸੈੱਲ ਵਿੱਚ ਫਾਰਮੂਲਾ ਦਾਖਲ ਕਰਨ ਤੋਂ ਬਾਅਦ, ਤੁਸੀਂ ਇਸਨੂੰ ਹੋਰ ਸਾਰੀਆਂ ਕਤਾਰਾਂ ਵਿੱਚ ਹੇਠਾਂ ਖਿੱਚ ਸਕਦੇ ਹੋ।
ਇਹ ਵਿਧੀ ਸਾਰੇ ਐਕਸਲ ਸੰਸਕਰਣਾਂ ਵਿੱਚ ਸੁੰਦਰਤਾ ਨਾਲ ਕੰਮ ਕਰਦਾ ਹੈ।
ਇੱਕੋ ਵਾਰ ਵਿੱਚ ਕਈ ਸੈੱਲਾਂ ਵਿੱਚ ਸਟਰਿੰਗਾਂ ਨੂੰ ਮਿਲਾਓ
ਇੱਕ ਫ਼ਾਰਮੂਲੇ ਨਾਲ ਕਈ ਸਤਰਾਂ ਨਾਲ ਮੇਲ ਕਰਨ ਲਈ, ਪਹਿਲੀ ਆਰਗੂਮੈਂਟ ਵਿੱਚ ਇੱਕ ਰੇਂਜ ਹਵਾਲਾ ਸ਼ਾਮਲ ਕਰੋ:
=RegExpMatch(A5:A9, "\b[A-Z]{2}-\d{3}\b")
Excel 365 ਅਤੇ Excel 2021 ਵਿੱਚ ਜੋ ਡਾਇਨਾਮਿਕ ਐਰੇ ਦਾ ਸਮਰਥਨ ਕਰਦੇ ਹਨ, ਇਹ ਇਸ ਤਰ੍ਹਾਂ ਕੰਮ ਕਰਦਾ ਹੈ - ਤੁਸੀਂ ਪਹਿਲੇ ਸੈੱਲ ਵਿੱਚ ਫਾਰਮੂਲਾ ਟਾਈਪ ਕਰਦੇ ਹੋ, ਐਂਟਰ ਦਬਾਓ, ਅਤੇ ਫਾਰਮੂਲਾ ਆਪਣੇ ਆਪ ਹੇਠਾਂ ਦਿੱਤੇ ਸੈੱਲਾਂ ਵਿੱਚ ਫੈਲ ਜਾਂਦਾ ਹੈ।
ਐਕਸਲ 2019 ਵਿੱਚ ਅਤੇ ਪਹਿਲਾਂ, ਇਹ ਸਿਰਫ਼ ਇੱਕ ਰਵਾਇਤੀ CSE ਐਰੇ ਫਾਰਮੂਲੇ ਦੇ ਤੌਰ 'ਤੇ ਕੰਮ ਕਰਦਾ ਹੈ, ਜੋ ਕਿ ਸੈੱਲਾਂ ਦੀ ਇੱਕ ਰੇਂਜ ਵਿੱਚ ਦਾਖਲ ਹੁੰਦਾ ਹੈ ਅਤੇ Ctrl + Shift + Enter ਕੁੰਜੀਆਂ ਨੂੰ ਇਕੱਠੇ ਦਬਾ ਕੇ ਪੂਰਾ ਕੀਤਾ ਜਾਂਦਾ ਹੈ।
ਨੰਬਰ ਨਾਲ ਮੇਲ ਕਰਨ ਲਈ Regex
0 ਤੋਂ 9 ਤੱਕ ਕਿਸੇ ਇੱਕ ਅੰਕ ਨਾਲ ਮੇਲ ਕਰਨ ਲਈ, regex ਵਿੱਚ \d ਅੱਖਰ ਦੀ ਵਰਤੋਂ ਕਰੋ। ਤੁਹਾਡੇ ਖਾਸ ਕੰਮ 'ਤੇ ਨਿਰਭਰ ਕਰਦੇ ਹੋਏ, ਇੱਕ ਢੁਕਵਾਂ ਕੁਆਂਟੀਫਾਇਰ ਜੋੜੋ ਜਾਂ ਇੱਕ ਹੋਰ ਗੁੰਝਲਦਾਰ ਪੈਟਰਨ ਬਣਾਓ।
ਕਿਸੇ ਵੀ ਸੰਖਿਆ ਨਾਲ ਮੇਲ ਕਰਨ ਲਈ Regex
ਕਿਸੇ ਵੀ ਲੰਬਾਈ ਦੇ ਕਿਸੇ ਵੀ ਸੰਖਿਆ ਨਾਲ ਮੇਲ ਕਰਨ ਲਈ, / ਦੇ ਠੀਕ ਬਾਅਦ + ਕੁਆਂਟੀਫਾਇਰ ਰੱਖੋ। d ਅੱਖਰ, ਜੋ 1 ਜਾਂ ਵੱਧ ਅੰਕਾਂ ਵਾਲੇ ਸੰਖਿਆਵਾਂ ਨੂੰ ਲੱਭਣ ਲਈ ਕਹਿੰਦਾ ਹੈ।
ਪੈਟਰਨ : \d+
=RegExpMatch(A5:A9, "\d+")
ਖਾਸ ਲੰਬਾਈ ਦੀ ਸੰਖਿਆ ਨਾਲ ਮੇਲ ਕਰਨ ਲਈ Regex
ਜੇਕਰ ਤੁਹਾਡਾ ਟੀਚਾ ਅੰਕਾਂ ਦੀ ਇੱਕ ਨਿਸ਼ਚਿਤ ਸੰਖਿਆ ਵਾਲੇ ਸੰਖਿਆਤਮਕ ਮੁੱਲਾਂ ਨਾਲ ਮੇਲ ਕਰਨਾ ਹੈ, ਤਾਂ ਇੱਕ ਉਚਿਤ ਮਾਤਰਾ ਦੇ ਨਾਲ \d ਦੀ ਵਰਤੋਂ ਕਰੋ।
ਉਦਾਹਰਨ ਲਈ, 7 ਅੰਕਾਂ ਵਾਲੇ ਇਨਵੌਇਸ ਨੰਬਰਾਂ ਨਾਲ ਮੇਲ ਕਰਨ ਲਈ, ਤੁਸੀਂ \d{7} ਦੀ ਵਰਤੋਂ ਕਰੋਗੇ। ਹਾਲਾਂਕਿ, ਕਿਰਪਾ ਕਰਕੇ ਧਿਆਨ ਵਿੱਚ ਰੱਖੋ ਕਿ ਇਹ 7 ਨਾਲ ਮੇਲ ਖਾਂਦਾ ਹੈਜਿਵੇਂ ਉਮੀਦ ਕੀਤੀ ਜਾਂਦੀ ਹੈ:
ਨੋਟ:
- ਅੰਤਰਰਾਸ਼ਟਰੀ ਕੋਡਾਂ ਦੀ ਜਾਂਚ ਨਹੀਂ ਕੀਤੀ ਜਾਂਦੀ, ਇਸ ਲਈ ਉਹ ਮੌਜੂਦ ਹੋ ਸਕਦੇ ਹਨ ਜਾਂ ਨਹੀਂ ਵੀ ਹੋ ਸਕਦੇ ਹਨ।
- ਨਿਯਮਤ ਸਮੀਕਰਨਾਂ ਵਿੱਚ, \s ਕਿਸੇ ਵੀ ਖਾਲੀ ਥਾਂ ਦੇ ਅੱਖਰ ਜਿਵੇਂ ਕਿ ਇੱਕ ਸਪੇਸ, ਟੈਬ, ਕੈਰੇਜ ਰਿਟਰਨ, ਜਾਂ ਨਵੀਂ ਲਾਈਨ ਲਈ ਖੜ੍ਹਾ ਹੈ। ਸਿਰਫ਼ ਖਾਲੀ ਥਾਂਵਾਂ ਦੀ ਇਜਾਜ਼ਤ ਦੇਣ ਲਈ, [-\' ਦੀ ਵਰਤੋਂ ਕਰੋ। ] ਦੀ ਬਜਾਏ [-\.\s]।
- [^13] ਕਿਸੇ ਵੀ ਇੱਕ ਅੱਖਰ ਨਾਲ ਮੇਲ ਕਰੇਗਾ ਜੋ 1 ਜਾਂ 3 ਨਹੀਂ ਹੈ।
- [^1-3] ਕਿਸੇ ਵੀ ਇੱਕ ਅੱਖਰ ਨਾਲ ਮੇਲ ਕਰੇਗਾ ਜੋ 1 ਨਹੀਂ ਹੈ, 2 ਜਾਂ 3 (ਜਿਵੇਂ ਕਿ 1 ਤੋਂ 3 ਤੱਕ ਕੋਈ ਵੀ ਅੰਕ)।
- ਉਪਰੋਕਤ regex ਸਿਰਫ਼ ਸਿੰਗਲ-ਲਾਈਨ ਸਤਰ ਲਈ ਕੰਮ ਕਰਦਾ ਹੈ। ਮਿਲਟੀ-ਲਾਈਨ ਸਤਰ ਦੇ ਮਾਮਲੇ ਵਿੱਚ, ^ ਅਤੇ $ ਅੱਖਰ ਇਨਪੁਟ ਸਤਰ ਦੀ ਸ਼ੁਰੂਆਤ ਅਤੇ ਅੰਤ ਦੀ ਬਜਾਏ ਹਰੇਕ ਲਾਈਨ ਦੇ ਸ਼ੁਰੂ ਅਤੇ ਅੰਤ ਨਾਲ ਮੇਲ ਖਾਂਦੇ ਹਨ, ਇਸਲਈ ਰੇਜੈਕਸ ਸਿਰਫ ਪਹਿਲੀ ਲਾਈਨ ਵਿੱਚ ਖੋਜ ਕਰਦਾ ਹੈ।
- ਸਤਰਾਂ ਨਾਲ ਮੇਲ ਕਰਨ ਲਈ ਜੋ ਸ਼ੁਰੂ ਨਾ ਹੋਣ ਕੁਝ ਟੈਕਸਟ ਨਾਲ, ਰੈਗੂਲਰ ਸਮੀਕਰਨ ਦੀ ਵਰਤੋਂ ਕਰੋ ਜਿਵੇਂ ਕਿ ^(?!lemons)।*$
- ਉਹਨਾਂ ਸਤਰਾਂ ਨਾਲ ਮੇਲ ਕਰਨ ਲਈ ਜੋ ਖਤਮ ਨਹੀਂ ਹੁੰਦੀਆਂ ਕੁਝ ਟੈਕਸਟ ਨਾਲ, ਸ਼ਾਮਲ ਕਰੋਖੋਜ ਪੈਟਰਨ ਵਿੱਚ ਅੰਤ ਵਾਲੀ ਸਤਰ ਐਂਕਰ: ^((?!lemons$).)*$
ਅੱਖਰ ਨਾਲ ਮੇਲ ਨਾ ਕਰਨ ਲਈ Regex
ਇੱਕ ਖਾਸ ਅੱਖਰ ਨੂੰ ਸ਼ਾਮਲ ਨਾ ਕਰਨ ਵਾਲੀਆਂ ਸਤਰਾਂ ਨੂੰ ਲੱਭਣ ਲਈ, ਤੁਸੀਂ ਮੇਲ ਖਾਂਦੀਆਂ ਨਕਾਰਾਤਮਕ ਸ਼੍ਰੇਣੀਆਂ [^ ] ਦੀ ਵਰਤੋਂ ਕਰ ਸਕਦੇ ਹੋ ਕੁਝ ਵੀ ਬਰੈਕਟਾਂ ਵਿੱਚ ਨਹੀਂ। ਉਦਾਹਰਨ ਲਈ:
ਫੋਨ ਨੰਬਰਾਂ ਦੀ ਸੂਚੀ ਵਿੱਚ, ਮੰਨ ਲਓ ਕਿ ਤੁਸੀਂ ਉਹਨਾਂ ਨੰਬਰਾਂ ਨੂੰ ਲੱਭਣਾ ਚਾਹੁੰਦੇ ਹੋ ਜਿਨ੍ਹਾਂ ਕੋਲ ਦੇਸ਼ ਦਾ ਕੋਡ ਨਹੀਂ ਹੈ। ਇਹ ਧਿਆਨ ਵਿੱਚ ਰੱਖਦੇ ਹੋਏ ਕਿ ਕਿਸੇ ਵੀ ਅੰਤਰਰਾਸ਼ਟਰੀ ਕੋਡ ਵਿੱਚ + ਚਿੰਨ੍ਹ ਸ਼ਾਮਲ ਹੁੰਦਾ ਹੈ, ਤੁਸੀਂ ਉਹਨਾਂ ਸਤਰਾਂ ਨੂੰ ਲੱਭਣ ਲਈ [^\+] ਅੱਖਰ ਸ਼੍ਰੇਣੀ ਦੀ ਵਰਤੋਂ ਕਰ ਸਕਦੇ ਹੋ ਜਿਸ ਵਿੱਚ ਪਲੱਸ ਚਿੰਨ੍ਹ ਸ਼ਾਮਲ ਨਹੀਂ ਹੈ। ਇਹ ਸਮਝਣਾ ਮਹੱਤਵਪੂਰਨ ਹੈ ਕਿ ਉਪਰੋਕਤ ਸਮੀਕਰਨ ਕਿਸੇ ਇੱਕ ਅੱਖਰ ਨਾਲ ਮੇਲ ਖਾਂਦਾ ਹੈ ਜੋ + ਨਹੀਂ ਹੈ। ਕਿਉਂਕਿ ਇੱਕ ਫ਼ੋਨ ਨੰਬਰ ਇੱਕ ਸਟ੍ਰਿੰਗ ਵਿੱਚ ਕਿਤੇ ਵੀ ਹੋ ਸਕਦਾ ਹੈ, ਇਹ ਜ਼ਰੂਰੀ ਨਹੀਂ ਕਿ ਸ਼ੁਰੂ ਵਿੱਚ ਹੀ ਹੋਵੇ, ਹਰ ਅਗਲੇ ਅੱਖਰ ਦੀ ਜਾਂਚ ਕਰਨ ਲਈ * ਕੁਆਂਟੀਫਾਇਰ ਜੋੜਿਆ ਜਾਂਦਾ ਹੈ। ਸ਼ੁਰੂਆਤ ^ ਅਤੇ ਅੰਤ $ ਐਂਕਰ ਇਹ ਯਕੀਨੀ ਬਣਾਉਂਦੇ ਹਨ ਕਿ ਪੂਰੀ ਸਤਰ ਦੀ ਪ੍ਰਕਿਰਿਆ ਕੀਤੀ ਗਈ ਹੈ। ਨਤੀਜੇ ਵਜੋਂ, ਸਾਨੂੰ ਹੇਠਾਂ ਰੈਗੂਲਰ ਸਮੀਕਰਨ ਮਿਲਦਾ ਹੈ ਜੋ ਕਹਿੰਦਾ ਹੈ ਕਿ "ਸਟ੍ਰਿੰਗ ਵਿੱਚ ਕਿਸੇ ਵੀ ਸਥਿਤੀ ਵਿੱਚ + ਅੱਖਰ ਨਾਲ ਮੇਲ ਨਹੀਂ ਖਾਂਦਾ"।
ਪੈਟਰਨ :^[^\+]*$
=RegExpMatch(A5, "^[^\+]*$")
ਰੇਜੈਕਸ ਟੂ ਨਾ ਮੇਲ ਸਤਰ
ਹਾਲਾਂਕਿ ਇਸ ਲਈ ਕੋਈ ਖਾਸ ਨਿਯਮਤ ਸਮੀਕਰਨ ਸੰਟੈਕਸ ਨਹੀਂ ਹੈ ਕਿਸੇ ਖਾਸ ਸਤਰ ਨਾਲ ਮੇਲ ਨਹੀਂ ਖਾਂਦਾ, ਤੁਸੀਂ ਇੱਕ ਨਕਾਰਾਤਮਕ ਲੁੱਕਅਹੇਡ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਇਸ ਵਿਵਹਾਰ ਦੀ ਨਕਲ ਕਰ ਸਕਦੇ ਹੋ।
ਮੰਨ ਲਓ ਕਿ ਤੁਸੀਂ ਉਹ ਸਤਰ ਲੱਭਣਾ ਚਾਹੁੰਦੇ ਹੋ ਜਿਸ ਵਿੱਚ "lemons" ਸ਼ਬਦ ਸ਼ਾਮਲ ਨਹੀਂ ਹੈ । ਇਹ ਨਿਯਮਤ ਸਮੀਕਰਨ ਇੱਕ ਟ੍ਰੀਟ ਦਾ ਕੰਮ ਕਰੇਗਾ:
ਪੈਟਰਨ : ^((?!lemons).)*$
ਸਪੱਸ਼ਟ ਤੌਰ 'ਤੇ, ਇੱਥੇ ਕੁਝ ਵਿਆਖਿਆ ਦੀ ਲੋੜ ਹੈ। ਨਕਾਰਾਤਮਕ ਲੁੱਕਅਹੇਡ (?!lemons) ਇਹ ਦੇਖਣ ਲਈ ਸੱਜੇ ਪਾਸੇ ਵੇਖਦਾ ਹੈ ਕਿ ਕੀ ਅੱਗੇ ਕੋਈ ਸ਼ਬਦ "lemons" ਨਹੀਂ ਹੈ। ਜੇਕਰ "lemons" ਨਹੀਂ ਹੈ, ਤਾਂ ਬਿੰਦੀ ਇੱਕ ਲਾਈਨ ਬ੍ਰੇਕ ਨੂੰ ਛੱਡ ਕੇ ਕਿਸੇ ਵੀ ਅੱਖਰ ਨਾਲ ਮੇਲ ਖਾਂਦੀ ਹੈ। ਉਪਰੋਕਤ ਸਮੀਕਰਨ ਸਿਰਫ਼ ਇੱਕ ਜਾਂਚ ਕਰਦਾ ਹੈ, ਅਤੇ * ਮਾਤ੍ਰਾਕਾਰ ^ ਦੁਆਰਾ ਐਂਕਰ ਕੀਤੀ ਸਤਰ ਦੀ ਸ਼ੁਰੂਆਤ ਤੋਂ ਲੈ ਕੇ $ ਦੁਆਰਾ ਐਂਕਰ ਕੀਤੀ ਸਟ੍ਰਿੰਗ ਦੇ ਅੰਤ ਤੱਕ ਇਸਨੂੰ ਜ਼ੀਰੋ ਜਾਂ ਇਸ ਤੋਂ ਵੱਧ ਵਾਰ ਦੁਹਰਾਉਂਦਾ ਹੈ।
ਟੈਕਸਟ ਕੇਸ ਨੂੰ ਅਣਡਿੱਠ ਕਰਨ ਲਈ, ਅਸੀਂ ਆਪਣੇ ਫੰਕਸ਼ਨ ਨੂੰ ਕੇਸ-ਸੰਵੇਦਨਸ਼ੀਲ ਬਣਾਉਣ ਲਈ 3ਵੀਂ ਆਰਗੂਮੈਂਟ ਨੂੰ FALSE 'ਤੇ ਸੈੱਟ ਕਰਦੇ ਹਾਂ:
=RegExpMatch(A5, $A$2, FALSE)
ਸੁਝਾਅ ਅਤੇ ਨੋਟ:
ਕੇਸ ਅਸੰਵੇਦਨਸ਼ੀਲ ਮੈਚਿੰਗ
ਕਲਾਸਿਕ ਰੈਗੂਲਰ ਸਮੀਕਰਨ ਵਿੱਚ, ਲਈ ਇੱਕ ਵਿਸ਼ੇਸ਼ ਪੈਟਰਨ ਹੈ ਕੇਸ-ਸੰਵੇਦਨਸ਼ੀਲ ਮੈਚਿੰਗ (?i), ਜੋ VBA RegExp ਵਿੱਚ ਸਮਰਥਿਤ ਨਹੀਂ ਹੈ। ਇਸ ਸੀਮਾ ਨੂੰ ਦੂਰ ਕਰਨ ਲਈ, ਸਾਡਾ ਕਸਟਮ ਫੰਕਸ਼ਨ match_case ਨਾਮਕ ਤੀਜਾ ਵਿਕਲਪਿਕ ਆਰਗੂਮੈਂਟ ਸਵੀਕਾਰ ਕਰਦਾ ਹੈ। ਕੇਸ-ਸੰਵੇਦਨਸ਼ੀਲ ਮਿਲਾਨ ਕਰਨ ਲਈ, ਇਸਨੂੰ ਸਿਰਫ਼ FALSE 'ਤੇ ਸੈੱਟ ਕਰੋ।
ਆਓ ਇਹ ਕਹੀਏ ਕਿ ਤੁਸੀਂ 1-ਮਾਰਚ-22 ਜਾਂ 01-ਮਾਰਚ-2022 ਵਰਗੀਆਂ ਤਾਰੀਖਾਂ ਦੀ ਪਛਾਣ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹੋ। dd-mmm-yyyy ਅਤੇ d-mmm-yy ਫਾਰਮੈਟਾਂ ਨਾਲ ਮੇਲ ਕਰਨ ਲਈ, ਅਸੀਂ ਹੇਠਾਂ ਦਿੱਤੇ ਨਿਯਮਤ ਸਮੀਕਰਨ ਦੀ ਵਰਤੋਂ ਕਰ ਰਹੇ ਹਾਂ।
ਪੈਟਰਨ : \b\d{1,2}-(ਜਨਇੱਕ 10-ਅੰਕ ਜਾਂ 100-ਅੰਕੀ ਸੰਖਿਆ ਸਮੇਤ ਸਤਰ ਵਿੱਚ ਕਿਤੇ ਵੀ ਅੰਕ। ਜੇਕਰ ਇਹ ਉਹ ਨਹੀਂ ਹੈ ਜੋ ਤੁਸੀਂ ਲੱਭ ਰਹੇ ਹੋ, ਤਾਂ ਸੀਮਾ \b ਸ਼ਬਦ ਨੂੰ ਦੋਵਾਂ ਪਾਸਿਆਂ 'ਤੇ ਰੱਖੋ।
ਪੈਟਰਨ : \b\d{7}\b
=RegExpMatch(A5:A9, "\b\d{7}\b")
ਫੋਨ ਨੰਬਰਾਂ ਨਾਲ ਮੇਲ ਕਰਨ ਲਈ Regex
ਕਿਉਂਕਿ ਫ਼ੋਨ ਨੰਬਰ ਵੱਖ-ਵੱਖ ਫਾਰਮੈਟਾਂ ਵਿੱਚ ਲਿਖੇ ਜਾ ਸਕਦੇ ਹਨ, ਇਸਲਈ ਉਹਨਾਂ ਨਾਲ ਮੇਲ ਕਰਨ ਲਈ ਇੱਕ ਵਧੇਰੇ ਵਧੀਆ ਰੈਗੂਲਰ ਸਮੀਕਰਨ ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ।
ਹੇਠਾਂ ਦਿੱਤੇ ਡੇਟਾਸੈਟ ਵਿੱਚ, ਅਸੀਂ 10-ਅੰਕ ਵਾਲੇ ਸੰਖਿਆਵਾਂ ਦੀ ਖੋਜ ਕਰਾਂਗੇ ਜਿਨ੍ਹਾਂ ਦੇ ਪਹਿਲੇ 2 ਸਮੂਹਾਂ ਵਿੱਚ 3 ਅੰਕ ਅਤੇ ਆਖਰੀ ਸਮੂਹ ਵਿੱਚ 4 ਅੰਕ ਹਨ। ਸਮੂਹਾਂ ਨੂੰ ਪੀਰੀਅਡ, ਹਾਈਫਨ ਜਾਂ ਸਪੇਸ ਨਾਲ ਵੱਖ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ। ਪਹਿਲਾ ਸਮੂਹ ਬਰੈਕਟਾਂ ਵਿੱਚ ਬੰਦ ਹੋ ਸਕਦਾ ਹੈ ਜਾਂ ਨਹੀਂ।
ਪੈਟਰਨ: (\(\d{3}\)