Copy link to clipboard
Copied
Hi.
I have this GREP in a paragraphstyle :
(?<!\(.*)((firstExpression)|(secondExpression)|(thirdExpression))|(fourthExpression)
The text has to be changed is:
Text firstExpression Text Text Text secondExpression Text Text Text thirdExpression
fourthExpression Text Text (firstExpression, Text Text secondExpression Text Text Text, thirdExpression)
It doesn´t work at all.
But with this one:
(?<!\()((firstExpression)|(secondExpression)|(thirdExpression))|(fourthExpression)
Except words between brackets not standing directly behind a bracket(red). They don't get bold.
Where is the bug in my GREP?
Copy link to clipboard
Copied
I did not understand your issue, can you specify what do you intend to find in your sample text, all the occurrences of firstExpression, secondExpression, thirdExpression, fourthExpression or only the one's that are inside ()
-Manan
Copy link to clipboard
Copied
Okay.
In a catalogue there are, at each item, two paragraphs of the same style. In the first one the (key)words are in the text, without brackets. In the second paragraph the same words comes sometimes within brackets. The whole catalogue contains 8 words have to be catched with GREPs at each item-description.
This is how it has to look like:
My problem is (in this case) word2 and word3 in the second paragraph.
Copy link to clipboard
Copied
If I understand correctly then you just need to capture these unique words irrespective of whether they are between () or not. If that is the case then does the following not work for you
firstExpression|secondExpression|thirdExpression|fourthExpression
-Manan
Copy link to clipboard
Copied
Only if they are not between ( )!
Copy link to clipboard
Copied
If possible, please show us these 8 words.
Copy link to clipboard
Copied
They are German terms for printing on articles. But the point is, not to make them bold within parentheses.
Copy link to clipboard
Copied
Ok
Dann hat dich bis jetzt jeder hier missverstanden.
Eine technisch nicht ganz so schöne, aber in den meisten Fällen funktionierende Variante wäre:
\([^\)]*\)
Copy link to clipboard
Copied
Ja, das wollte ich eigentlich vermeiden.
1.) würde aber gerne trotzdem eine Erklärung dafür haben, wieso mein reg. Ausdruck nicht funktioniert
2.) was bedeutet
\([^\)]*\)
Copy link to clipboard
Copied
Das Problem ist, dass Lookbehinds nicht mit unterschiedlichen Zeichenlängen umgehen können.
(Für positive Lookbehinds gibt seit einiger Zeit es die Alternative \K)
Aber du suchst nach Begriff/en, der/die NICHT nach einer öffnenden Klammer, eventuell mit unterschiedlicher Zeichenanzahl nachfolgend, stehen/t - und zusätzlich VOR eventuell unterschiedlichen Zeichen, die NICHT eine schließende Klammer sind, gefolgt von einer schließenden Klammer.
Mal sehen, ob die anderen Forenmitglieder nicht vielleicht doch noch einen Geniestreich „aus dem Hut“ zaubern können.
Copy link to clipboard
Copied
\([^\)]*\)
bedeutet
Copy link to clipboard
Copied
Danke für die Erklärung. Im Prinzip ging's mir um die eckige Klammer mit dem "Hütchen". Dieses kannte ich noch nicht. Werde es also erst einmal so versuchen, in der Hoffnung die Formatierung irgendwann mit einem einzigen Ausdruck lösen zu können.
Copy link to clipboard
Copied
Die Klammer mit dem „führenden Hütchen“ findet alles was NICHT in der Klammer steht.
Copy link to clipboard
Copied
Eigentlich würde für meine Zwecke auch:
\(.*\)
reichen, oder? Also alles was zwischen Klammern steht soll regular sein.
Copy link to clipboard
Copied
Ja.
Aber dieser Grep ist gierig und findet alles von der ersten öffnenden bis zur letzten schließenden Klammer.
Also zuviel.
Copy link to clipboard
Copied
\(.+?\)
kürzeste Entsprechung.