Use regexp to find all letters in string except one

조회 수: 26 (최근 30일)
Assen Koev
Assen Koev 2024년 1월 24일
댓글: Stephen23 2024년 1월 24일
Is it possible to build a regexp search expression with an "intersection" of the default sets?
Simple conceptual example is the following:
Suppose I have a char 'abcd1 23 ,.@_'. (the char can include ANY character, not just the example ones)
I would like to return all LETTERS only except for 'd'.
In other words I need the search expression EXPR to be "\w except for d" or an intersection of \w and [^d]
Code example:
inputText = 'abcd1 23 ,.@_';
EXPR = ?
result = regexp(inputText,EXPR,'match')
{'a'} {'b'} {'c'}
Thank you
  댓글 수: 3
Assen Koev
Assen Koev 2024년 1월 24일
편집: Assen Koev 2024년 1월 24일
Thanks Stephen
thanks for the correction I should have used a-zA-Z instead of \w
So, just to confirm that "You would have to list..." means constructions like the one in the link here is not possible?
I mean the format "[A-Z&&[^IVX]]+"?
Stephen23
Stephen23 2024년 1월 24일
"constructions like the one in the link here is not possible?"
There are no such constructions shown in the MATLAB documentation:

댓글을 달려면 로그인하십시오.

채택된 답변

Sulaymon Eshkabilov
Sulaymon Eshkabilov 2024년 1월 24일
This how it can be done:
inputText = 'abcd1 23 ,.@_';
EXPR = '[a-cA-Ce-zA-Z]';
result = regexp(inputText, EXPR, 'match');
disp(result);
{'a'} {'b'} {'c'}

추가 답변 (1개)

Anton Kogios
Anton Kogios 2024년 1월 24일
편집: Anton Kogios 2024년 1월 24일
I copied your question (with no edits) into the MATLAB AI Chat Playground, and this was the response:
Yes, it is possible to build a regexp search expression with an "intersection" of the default sets in MATLAB. To return all letters except for 'd', you can use the following expression:
inputText = 'abcd1 23 ,.@_';
EXPR = '[a-ce-zA-Z]';
result = regexp(inputText, EXPR, 'match')
result = 1×3 cell array
{'a'} {'b'} {'c'}
The expression `[a-ce-zA-Z]` matches any letter from 'a' to 'c' and from 'e' to 'z' (both lowercase and uppercase). The result will be a cell array containing the matched letters: `{'a', 'b', 'c'}`.
I think that there is a small error in that EXPR should be '[a-ce-zA-CE-Z]' to get both lowercase and uppercase if you want it. I would also note that using \w as you mentioned would also include numbers (not just letters).
Hope this helps!

카테고리

Help CenterFile Exchange에서 Get Started with MATLAB에 대해 자세히 알아보기

태그

제품


릴리스

R2023b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by